当前位置:  开发笔记 > 编程语言 > 正文

ptr->你好();/*VERSUS*/(*ptr).hello();

如何解决《ptr->你好();/*VERSUS*/(*ptr).hello();》经验,为你挑选了5个好方法。

我正在学习C++指针,->操作员对我来说似乎很奇怪.而不是 ptr->hello();一个人可以写,(*ptr).hello();因为它似乎也有效,所以我认为前者只是一种更方便的方式.

是这样的情况还是有什么不同?



1> dsimcha..:

- >运算符只是语法糖因为(*ptr).hello()是要输入的PITA.就ASM级别生成的指令而言,没有区别.实际上,在某些语言中(D会想到),编译器会根据类型计算出所有内容.如果你这样做ptr.hello(),它只是工作,因为编译器知道ptr是一个指针,并且没有hello()属性,所以你必须这样做(*ptr).hello().



2> Max Lybbert..:

其他人已经回答了关于内置指针的问题.关于类,可以重载operator - >(),operator&()和operator*(),但不能重载operator.().

这意味着对象可能会根据您调用的语法采取不同的行为.


当然,任何以这种方式使这些操作行为不同的人都应该被枪杀.

3> Colin..:

当你必须链接函数调用时,可读性方面的主要优点是:

ptr->getAnotherPtr()->getAThirdPtr()->print()

我甚至不打算用*运算符来做这件事.



4> jjnguy..:

拥有'->'操作员的唯一原因是使其更方便并保存错误,如:

*ptr.hello();

因为很容易忘记括号.



5> Andrei Krotk..:

它们生成相同的机器代码,但对我来说,ptr-> arg()比(*ptr).arg()更容易阅读.

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有