c++ 重载->

-> 平时是对指针对象的基本操作。

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的源码你就明白啦。

原文地址:https://www.cnblogs.com/chenhuan001/p/7403029.html