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

标签 c++ new-operator

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

#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/

相关文章:

c++ - Aerospike 没有回应

c++ - system()并继承lxc功能

c++ - 在这种情况下如何解决?语法错误 : missing ';' before '* "node"?

c++ - C 和 C++ 中 const 变量的不同输出

c++ - 我们可以重载 malloc() 吗?

dll中的子应用程序中的c++事件循环

c++ - 插入双向链表

c++ - 我们应该删除一个不是 new/malloc 的指针吗?

C++ 删除了 new 运算符但可以创建 shared_ptr

javascript - `new` 没有 `delete` 在 Javascript 中的相同变量