// 重载 * 和 -> // 注意: * 和 -> 的重载不能有参数 #include #include #include using namespace std; class A { private: int x; public: explicit A(int x) : x(x) {} void printA() { cout << "x = " << x << endl; } }; class B { private: A *mA; public: B(int x) : mA(new A(x)) { } A *operator->() { return mA; } A &operator*() { return *mA; } }; int main() { B b(20); // b -> 执行 B 类的 -> 重载,返回 A 类的对象的指针 b->printA(); B b2(30); // *b 执行 B 类的 * 重载函数,返回 A 类的对象 (*b2).printA(); return 0; }