为什么下面的程序编译失败。
#include <iostream>
using namespace std;
class Test
{
public:
void fun()
{
cout<<"fun() in Test\n";
}
};
int main() {
new Test()->fun();
// your code goes here
return 0;
}
访问此链接:http://ideone.com/qtCufW
在 Java 和 C# 中允许使用匿名对象调用成员方法,但为什么在 C++ 中不允许? 请帮助我。
最佳答案
要修复语法错误,请将新表达式括起来
(new Test())->fun();
因为 new
和 ->
操作符的优先级意味着你的被解析为
new (Test()->fun());
这是错误的。
要修复内存泄漏,请停止使用 new
。您不再编写 Java 或 C#。
Test().fun();
关于c++使用匿名对象调用函数导致编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28349360/