如果参数复杂,*和&运算​​符的操作是什么?

bas*_*ibe 2 c c++ language-features operator-keyword

简单来说就是

&someObject->someAttribute.someMember;
Run Code Online (Sandbox Code Playgroud)

相当于

&(someObject->someAttribute.someMember);
Run Code Online (Sandbox Code Playgroud)

要么

(&someObject)->someAttribute.someMember;
Run Code Online (Sandbox Code Playgroud)

要么

(&(someObject->someAttribute)).someMember;
Run Code Online (Sandbox Code Playgroud)

或者你真的应该在那里放置明确的括号以确保安全吗?

Jam*_*lis 10

它相当于:

&((someObject->someAttribute).someMember)
Run Code Online (Sandbox Code Playgroud)

->.具有相同的优先级是左结合.一元 - &具有较低的优先权.

如果你有非常复杂的表达式,那么你当然应该用括号分组并澄清你的代码.但这并不是特别复杂; 在C和C++中看到这样的代码是很常见的.