以前学类的时候,一个指针指向类的实例,当我们想通过指针访问某些类的成员的时候,书上直接告诉你,使用->
来访问这些成员,不能用.
运算符。
我以前也是默默接受了这个观点,平时也没细想,今天才知道是怎么回事。
string *p = string("hello");
*p.empty(); // 错误。会先执行p.empty(),之后再*解引用
(*p).empty(); // 正确
所以本质上是运算顺序的问题,要保证解引用运算符先进行。
后面就直接引入了->
,直接避免了这个复杂的写法,p->empty()
简单了很多。