Joe*_*oey 12 c++ pointers operators dereference
我正在学习C++指针,->操作员对我来说似乎很奇怪.而不是
ptr->hello();一个人可以写,(*ptr).hello();因为它似乎也有效,所以我认为前者只是一种更方便的方式.
是这样的情况还是有什么不同?
dsi*_*cha 35
- >运算符只是语法糖因为(*ptr).hello()是要输入的PITA.就ASM级别生成的指令而言,没有区别.实际上,在某些语言中(D会想到),编译器会根据类型计算出所有内容.如果你这样做ptr.hello(),它只是工作,因为编译器知道ptr是一个指针,并且没有hello()属性,所以你必须这样做(*ptr).hello().
Max*_*ert 15
其他人已经回答了关于内置指针的问题.关于类,可以重载operator - >(),operator&()和operator*(),但不能重载operator.().
这意味着对象可能会根据您调用的语法采取不同的行为.
当你必须链接函数调用时,可读性方面的主要优点是:
ptr->getAnotherPtr()->getAThirdPtr()->print()
Run Code Online (Sandbox Code Playgroud)
我甚至不打算用*运算符来做这件事.
| 归档时间: |
|
| 查看次数: |
1175 次 |
| 最近记录: |