在一行中删除多个指针。 C++ [重复]
Posted
技术标签:
【中文标题】在一行中删除多个指针。 C++ [重复]【英文标题】:deleting multiple pointers in one line. c++ [duplicate] 【发布时间】:2013-03-19 12:22:20 【问题描述】:这是删除所有指针还是只删除第一个指针 p1?
delete p1,p2,p3,p4,p5;
【问题讨论】:
你为什么不试试呢? 它会删除最后一个。查找逗号运算符(Java 没有附带的东西)。 @john 我认为它实际上删除了第一个。delete
的优先级高于 ,
@JavaNewb 这很容易测试,你为什么不呢?
@Tushar 愚蠢的我不检查。然而仍然获得三票!
【参考方案1】:
因为 ',' 是逗号运算符,显然只有指向的第一个对象被删除,而其余的表达式被评估并丢弃结果:
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】:它会删除第一个。
逗号运算符评估逗号前面的内容,然后将其丢弃。
【讨论】:
【参考方案3】:相当于:
(((((delete p1),p2),p3),p4),p5);
即delete
s p1
然后将逗号运算符应用于结果(没有结果)和p2
。表达式 p2
到 p5
被简单地计算并丢弃结果。
【讨论】:
以上是关于在一行中删除多个指针。 C++ [重复]的主要内容,如果未能解决你的问题,请参考以下文章