首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指针->Call()和(*指针).Call()之间的区别

指针->Call()和(*指针).Call()之间的区别
EN

Stack Overflow用户
提问于 2012-11-19 13:48:08
回答 2查看 182关注 0票数 2

可能重复: ptr).hello();

我正在学习C++,我的问题是使用箭头操作符(->)或取消引用指针*来调用函数之间是否有任何区别。

这两个例子说明了我的问题。

代码语言:javascript
复制
Class* pointer = new Class();
(*pointer).Function();         // case one
pointer->Function();           // case two

有什么关系?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-19 13:59:06

给定的

代码语言:javascript
复制
Class* pointer = new Class();

然后

代码语言:javascript
复制
(*pointer).Function();         // case one

取消指针,并对引用的对象调用成员函数Function。它不使用任何重载运算符。运算符不能在原始指针或内置类型参数上重载。

代码语言:javascript
复制
pointer->Function();           // case two

这与第一个相同,使用内置的->,因为pointer是一个原始指针,但是这个语法更适合于更长的去引用链。

考虑一下。

代码语言:javascript
复制
(*(*(*p).pSomething).pSomethingElse).foo()

对比

代码语言:javascript
复制
p->pSomething->pSomethingElse->foo()

->表示法一目了然。

票数 3
EN

Stack Overflow用户

发布于 2012-11-19 13:49:56

如果运算符*->没有重载,则两个版本完成相同的任务。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13455139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档