consign3.cpp

来自「ThinkingC++中文版」· C++ 代码 · 共 39 行

CPP
39
字号
class server{
private:
public: 
	void a(){}
	void b(){}
	void c(){}
	void d(){}
};


class client{
private: 
	server* delegate;
public: 
	client()
	{
		delegate=new server;
	}
	server* operator->()		//递引用运算符重载
	{		
		return delegate;		
	}
};
//⑴通过重载-〉,减少了在客户类client中复写接口的麻烦,并且当服务器类server的接口发生变化时,客户类client不受影响。
//例如,服务器类server中增加一个接口void e();客户类client对象c,就可直接使用:c->e()。
//⑵以上例子通过重载"->",来实现转送技术或委托功能。当然,也可以对其它运算符重载来实现这一功能(比如[]),
//只不过,"->"更直观,因为"·"不能重载。


void main()
{
	client m;
//	m.a();
//	m.d();
	m->a();//(m.operator->())->a();
	m->b();
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?