2013-03-28 22 views

Odpowiedz

18

jest równoważna:

(((((delete p1),p2),p3),p4),p5); 

Oznacza to, że delete s p1 a następnie operator przecinek nakłada się na skutek (którego nie jest określona) i p2. Wyrażenia od p2 do p5 są po prostu obliczane, a wyniki odrzucane.

0

Usuwa pierwszy.

Operator przecinka ocenia, co znajduje się przed przecinkiem, a następnie odrzuca go.

3

Bo „” jest operatorem przecinka oczywiście tylko pierwszy obiekt wskazał zostanie usunięty, podczas gdy reszta wyrażeń jest oceniany, a wyniki są odrzucane:

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; 
//... 

wyjściowa:

~ Aa1

....

~ Aa2