-> 平时是对指针对象的基本操作。
A* a = new A();
a->do_something();
直接就可以调用类内部函数。
而如果:
A a;//a直接为对象时
a->func();//这个又是怎样的呢
这是由 C++ 标准规定的,对于a->mem
根据a类型的不同,操作符->
的解释也不同:
-
当a的类型是内置指针类型时,等价于
(*a).mem
-
当a的类型是类时,等价于a
.operator->()->mem
而为啥A a;
这种时候需要用到a->呢,看看auto_ptr的源码你就明白啦。