c ++使用匿名对象调用函数导致编译器错误

c++ calling a function using anonymous object results compiler error

为什么下面的程序编译失败

#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;
}

访问此 link:http://ideone.com/qtCufW

在Java和C#中允许使用匿名对象调用成员方法,但为什么在C++中不允许? 请帮助我。

要修复语法错误,请将新表达式括起来

(new Test())->fun();

因为 new-> 运算符的优先级意味着您的优先级被解析为

new (Test()->fun());

格式错误。

要修复内存泄漏,请停止使用 new。您不再编写 Java 或 C#。

Test().fun();