2013-03-28 9 views
10

これはすべてのポインタを削除しますか、これは最初のポインタp1を削除しますか?複数のポインタを1行で削除します。 C++

delete p1,p2,p3,p4,p5; 
+1

は、なぜあなたはそれを試してみませんか? – Tushar

+3

最後のものを削除します。カンマ演算子(Javaが偶然に持っていないもの)を探します。 – john

+6

@john私はそれが実際に最初のものを削除すると思います。 'delete'は'、 'より高い優先順位を持っています – Tushar

答えて

18

それは等価であると:である

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

、それdelete S p1、次にコンマ演算子は(そのいずれも存在しない)結果とp2に適用されます。式p2p5は単純に評価され、結果は破棄されます。

0

最初のものを削除します。

コンマの演算子は、コンマの前にあるものを評価し、それを破棄します。

3

「」明らかにカンマ演算子であるため、唯一の第一の目的は、式の残りの部分が評価されている間、削除されるために指摘し、結果が破棄されています

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

出力:

〜はAa1

....

〜Aa2の

関連する問題