我正在查看一些遗留代码并遇到了 x=new(Foo);
(请注意提供的类型周围的括号)。我测试了变体,它似乎与 x=new Foo;
Foo 是一个非 POD 数据结构。某些外部内存泄漏程序正在标记该行 - 它正在为 CORBA 输出参数分配内存,因此调用者应该负责删除,但这是一个包含许多间接层的单独问题。
我的分析是否正确,是可以接受的风格吗?
最佳答案
这是正确的,但至少风格不寻常。
有时允许在完整的类型名称周围使用括号,但在这种情况下是无关紧要的。这就像在不需要的表达式周围加上括号。也许最接近的类比是
return( 0 ); /* looks like a function, but isn't */
令人困惑的是,sizeof
运算符在向其传递类型名称时需要括号,但在向其传递表达式时则不需要。我个人认为这是一种不一致,不会选择将其传播到其他语言。
关于c++ - "x = new(Foo)"与任意 Foo 的 "x = new Foo"相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14349470/