请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

c++ node.left和node->left有啥区别

bobo老师好,我是只会java不会c++的铁头娃。简单2天学习c++之后,发现c++和java还是很像的。学到5-4感觉不是很吃力。

有一点不明。c++ node.left和node->left有啥区别?

谢谢。

正在回答

1回答

liuyubobobo 2018-12-18 19:45:29

点和箭头表意是一样的,作用的对象不同。


点作用于一个类对象上;箭头作用于一个对象指针上。

所以,

如果你能调用node.left,node的类型一定是Node;

如果你能调用node->left,node的类型一定是Node*;(注意:多了一个星号!)


反之,

如果node的类型是Node,则你只能调用node.left,试图调用node->left是编译不过的;

如果node的类型是Node*(注意:多了一个星号!),则你只能调用node->left,试图调用node.left是编译不过的;


如果你的node是指针,你想调用点运算符,可以这样做:(*node).left


如果你不熟悉C++,相信你已经晕了。所以Java更简单。由于Java不区分对象和对象指针,所以就没有这两个运算符的区别。在Java中,统一叫对象引用。


但其实,Java中引用这个概念,更像C++的指针。(或者说就是C++的指针)。在Java中,所有的类实例变量都是引用,本质是所有的类实例变量,都是C++中的指针:)


加油!:)

4 回复 有任何疑惑可以回复我~
  • 提问者 Lincolnshan #1
    明白了!谢谢男神!
    回复 有任何疑惑可以回复我~ 2018-12-18 21:44:09
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信