C++的箭头运算符

以前学类的时候,一个指针指向类的实例,当我们想通过指针访问某些类的成员的时候,书上直接告诉你,使用->来访问这些成员,不能用.运算符。

我以前也是默默接受了这个观点,平时也没细想,今天才知道是怎么回事。

string *p = string("hello");
*p.empty();  // 错误。会先执行p.empty(),之后再*解引用
(*p).empty();  // 正确

所以本质上是运算顺序的问题,要保证解引用运算符先进行。

后面就直接引入了->,直接避免了这个复杂的写法,p->empty()简单了很多。

posted @ 2024-02-23 17:02  wenli7363  阅读(17)  评论(0编辑  收藏  举报