Elimina tutti i puntatori o cancella il primo puntatore p1?eliminazione di più puntatori in una riga. C++
delete p1,p2,p3,p4,p5;
Elimina tutti i puntatori o cancella il primo puntatore p1?eliminazione di più puntatori in una riga. C++
delete p1,p2,p3,p4,p5;
È equivalente a:
(((((delete p1),p2),p3),p4),p5);
Cioè, esso delete
s p1
e quindi l'operatore virgola viene applicato al risultato (di cui v'è nessuno) e p2
. Le espressioni da p2
a p5
vengono semplicemente valutate e i risultati vengono scartati.
Elimina il primo.
L'operatore virgola valuta cosa c'è di fronte alla virgola, quindi la elimina.
causa '' è operatore virgola, ovviamente, solo il primo oggetto puntato viene eliminato, mentre il resto delle espressioni viene valutata ei risultati vengono scartati:
class A{
public:
string name_;
A(){}
A(string name):name_(name){}
~A(){cout<<"~A"<<name_;}
};
int main(){
A* a1=new A("a1");
A* a2=new A("a2");
delete a1, a2;
cout<<"\n.....\n";
delete a2, a1;
//...
uscita:
~ Aa1
....
~ Aa2
Perché non provare? – Tushar
Elimina l'ultimo. Cerca l'operatore virgola (qualcosa che Java non ha incidentalmente). – john
@john Penso che cancelli il primo, in realtà. 'delete' ha una precedenza più alta di', ' – Tushar