C++指向成员运算符重载

来源:互联网 发布:魔兽世界辅助软件 编辑:程序博客网 时间:2024/06/06 08:42

直接上代码

#include <iostream>
using namespace std;
class A
{
public:
    void funcA()
    {  
       cout << "funcA()" << endl; 
    }
};
class B
{
protected:
    A* p;
public:
    B(A* pa): p(pa){}
    void funcB()
    {  
       cout << "funcB()" << endl; 
    }
    A* operator ->()
    { 
       return p; 
    }
};
void main()
{
    A a;
    B b(&a);
    b->funcA();//其实很简单,重载后,b->funcA();被解释为(b.operator->())->funcA(),即(&a)->funcA;
}

不过注意一下,->运算符和(),[]等几个运算符一样(好吧太久没写C++,忘了剩下的几个了),只能重载为成员函数,而不能是友元

至于为什么只能重载为成员,读者可以去查阅一下其他资料,我确实有点记不清了,大多数是处于一些逻辑上的考虑吧

0 0
原创粉丝点击