c++委托-3

先看一个简单的接口方式实现的委托

#include <iostream>
using namespace std;
class I //iterface
{
public:
	virtual void f()=0;
	virtual void g()=0;
};

class A:public I
{
public:
	void f()
		{
			cout<<"A::f()"<<endl;
		}

	void g()
		{
			cout<<"A::g()"<<endl;
		}
};

class B:public I
{
public:
	void f()
		{
			cout<<"B::f()"<<endl;
		}

	void g()
		{
			cout<<"B::g()"<<endl;
		}
};

class C:public I
{
private:
	I *m_i;
public:
	C()//构造函数
		{
			m_i=new A();
		}

	void f()
		{
			m_i->f();
		}

	void g()
		{
			m_i->g();
		}

	void toA()
		{
			m_i=new A();
		}

	void toB()
		{
			m_i=new B();
		}
};

int main()
{
	C cc=C();
	cc.f();
	cc.g();

	cc.toB();
	cc.f();
	cc.g();
}

运行结果:

A::f()
A::g()
B::f()
B::g()

接下来要做的事情是把该例程优化为带模板的委托,这样才能通用;
参考文章:http://www.cnblogs.com/zplutor/archive/2011/09/17/2179756.html

猜你喜欢

转载自blog.csdn.net/qq_41903811/article/details/88393648