为什么以下程序在编译时失败。
#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和Java中使用匿名对象调用成员方法。 C#,但为什么不允许在C ++中? 请帮帮我。
答案 0 :(得分:10)
要修复语法错误,请将new-expression
括起来(new Test())->fun();
因为new
和->
运算符的优先级意味着您的运算符被解析为
new (Test()->fun());
这是不正确的。
要修复内存泄漏,请停止使用new
。你不再编写Java或C#了。
Test().fun();