c++ - 为什么不能在指针对象上调用函数?

标签 c++ pointers pass-by-reference operator-precedence

编辑:抱歉这个愚蠢的标题;我想我所说的“指针对象”是指取消引用的对象指针(如果有任何说明的话)。

我是 C++ 的新手,我一直在努力适应它的特性(来自 Java)。

我知道这通常不是必需的,但我想尝试通过指针传递对象。它当然有效,但我期待它也有效:

void test(Dog * d) {
*d.bark();
}

但事实并非如此。为什么是这样?我发现我可以执行以下操作:

void test(Dog * d) {
Dog dawg = *d;
dawg.bark();
}

而且它完美地工作。这对我来说似乎是多余的。

如有任何澄清,我们将不胜感激。谢谢!

最佳答案

伊莫。优先于取消引用 * ,因此:

(*d).bark();

或者,对于指针,如其他回复中所述 - 使用 ->

d->bark();

一定要检查 null :)

关于c++ - 为什么不能在指针对象上调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11322381/

相关文章:

c++ - Clang 5.0 和 UBsan 的指针加法和整数溢出?

c++ - 如何为类型列表中的每种类型创建一个元素并将其添加到 C++ 中的 vector 中?

c++ - CodeBlocks SFML 音频库将不起作用

c++ - 从指针返回对象时意外的析构函数调用

c - 文件中此时函数 ' ' 的参数过多

c# - 传递对象的字段而不是整个对象本身是否小于 'expensive'?

c++ - 未解析的外部符号 b3Clock

c - sizeof char **指针是否取决于机器的体系结构?

c - 指向 C 中指针的指针

c++ - 通过引用 v. 通过指针传递——优点?