可能重复: ptr).hello();
我正在学习C++,我的问题是使用箭头操作符(->)或取消引用指针*来调用函数之间是否有任何区别。
这两个例子说明了我的问题。
Class* pointer = new Class();
(*pointer).Function(); // case one
pointer->Function(); // case two有什么关系?
发布于 2012-11-19 13:59:06
给定的
Class* pointer = new Class();然后
(*pointer).Function(); // case one取消指针,并对引用的对象调用成员函数Function。它不使用任何重载运算符。运算符不能在原始指针或内置类型参数上重载。
pointer->Function(); // case two这与第一个相同,使用内置的->,因为pointer是一个原始指针,但是这个语法更适合于更长的去引用链。
考虑一下。
(*(*(*p).pSomething).pSomethingElse).foo()对比
p->pSomething->pSomethingElse->foo()->表示法一目了然。
发布于 2012-11-19 13:49:56
如果运算符*和->没有重载,则两个版本完成相同的任务。
https://stackoverflow.com/questions/13455139
复制相似问题