我正在学习 C++ 指针和->
操作员对我来说似乎很奇怪。代替ptr->hello();
一个人可以写(*ptr).hello();
因为它似乎也有效,所以我认为前者只是一种更方便的方法。
是这样还是有什么区别?
-> 运算符是只是语法糖因为(*ptr).hello()
是一个需要输入的 PITA。就 ASM 级别生成的指令而言,没有区别。事实上,在某些语言中(我想到的是 D),编译器根据类型计算出所有内容。如果你这样做ptr.hello()
,它就可以工作,因为编译器知道 ptr 是一个指针并且没有 hello() 属性,所以你必须意味着(*ptr).hello()
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)