这会删除所有指针还是只删除第一个指针p1?
delete p1,p2,p3,p4,p5;
这会删除所有指针还是只删除第一个指针p1?
delete p1,p2,p3,p4,p5;
这相当于:
(((((delete p1),p2),p3),p4),p5);
也就是说,它 删除
了 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;
//...
output:
~Aa1
....
~Aa2
delete
的优先级高于,
。 - Tushar