为什么在解引用指针上调用成员函数需要括号?

时间:2016-02-02 04:11:29

标签: c++

为什么围绕此代码段中指针的括号是必要的?

cout << (*pStr).size() << endl;

回顾我的书后,我终于在一个我看过的脚注中找到了一点提及。

它说,&#34; - 这确保点运算符将应用于指针所指向的对象。&#34;

为什么这不起作用?

cout << *pName.size() << endl;

我只是问,因为我的书并没有给出很好的解释,因为我浪费了很多时间试图弄清楚为什么这行代码给我一个错误。 (当然我忘记了括号)

1 个答案:

答案 0 :(得分:4)

.的优先级高于*。因此*foo.bar表示*(foo.bar)

因此,此代码无效,因为.运算符无法应用于指针

(我使用了没有函数调用操作符()的示例,因为它的优先级也高于*所以它变得复杂了。

请记住,您可以而且应该写pName->size()。可能会创建->以避免所有这些括号。