为什么以下程序在编译时失败.
#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;
}
Run Code Online (Sandbox Code Playgroud)
访问此链接:http://ideone.com/qtCufW
允许在Java和C#中使用匿名对象调用成员方法,但为什么不允许在C++中使用?请帮我.
Mik*_*our 11
要修复语法错误,请将new-expression括起来
(new Test())->fun();
Run Code Online (Sandbox Code Playgroud)
因为new和->运算符的优先级意味着你的解析为
new (Test()->fun());
Run Code Online (Sandbox Code Playgroud)
这是不正确的.
要修复内存泄漏,请停止使用new.你不再编写Java或C#了.
Test().fun();
Run Code Online (Sandbox Code Playgroud)