这会删除所有指针还是只删除第一个指针p1?
delete p1,p2,p3,p4,p5;
答案 0 :(得分:20)
相当于:
(((((delete p1),p2),p3),p4),p5);
也就是说,delete
s p1
然后将逗号运算符应用于结果(其中没有)和p2
。简单地评估表达式p2
到p5
并丢弃结果。
答案 1 :(得分:4)
因为','是逗号运算符,显然只有第一个指向的对象被删除,而其余的表达式被计算并且结果被丢弃:
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的
答案 2 :(得分:1)
删除第一个。
逗号运算符评估逗号前面的内容然后丢弃它。