在一行中删除多个指针。 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);

deletes p1 然后将逗号运算符应用于结果(没有结果)和p2。表达式 p2p5 被简单地计算并丢弃结果。

【讨论】:

以上是关于在一行中删除多个指针。 C++ [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中的同一行中获取多个输入?

如何在一行中执行多个命令[重复]

从 C++ 中的排序数组中删除重复项

可扩展散列 - 析构函数 C++

C++——如何将一个字符串转换为多个整数?

没有指针的 C++ 分段错误 (HackerRank)