2013-03-28 21 views

risposta

18

È 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.

0

Elimina il primo.

L'operatore virgola valuta cosa c'è di fronte alla virgola, quindi la elimina.

3

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