在一行中删除多个指针.c++

deleting multiple pointers in one line. c++

本文关键字:删除 指针 c++ 一行      更新时间:2023-10-16

这是删除所有指针还是只删除第一个指针p1?

delete p1,p2,p3,p4,p5;  

相当于:

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

即,如果delete = p1,然后对结果(没有)和p2应用逗号操作符。对表达式p2 ~ p5简单求值,结果丢弃。

因为','是逗号操作符,显然只会删除指向的第一个对象,而对其余表达式求值并丢弃结果:

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

删除第一个。

逗号运算符计算逗号前面的内容,然后丢弃它。