为什么(new Foo()) - > baa()工作但新的Foo() - > baa()没有?

The*_*ask 1 c++ operators

为什么(new Foo())->baa()工作但new Foo()->baa()没有?它是否与->优先权或类似的东西有关?我不知道这个称为合适的术语,我是C++的新手......

Bar*_*mar 5

这是因为运营商优先.()并且->优先级高于new,所以第二个表达式被视为你写的:

new ( ( (Foo() -> baa)() ) )
Run Code Online (Sandbox Code Playgroud)