c++ 类 静态类型与动态类型 匹配

#include <iostream>
using namespace std;

class qq{
};

class sonqq: public qq{
};

class wx{
};

class A{

public:

	virtual void f1(qq *arg )  //虚函数 表示可以重写
	{
		cout<<"A qq"<<endl;
	}

	virtual void f1(wx *arg)
	{
		cout<<"A wx"<<endl;
	}

	virtual void f1(sonqq *arg )
	{
		cout<<"A sonqq"<<endl;
	}
};

class B: public A{

public:

	void f1(qq *arg)
	{
		cout <<"B qq"<<endl;

	}
	
	void f1(wx *arg)
	{
		cout<<"B wx"<<endl;
	}

	void f1(sonqq *arg )
	{
		cout<<"B sonqq"<<endl;
	}
};

int main()
{
	A *b1 = new B(); //b1的类型是A,只能调用 A 中已有方法
	
	qq *q1 = new sonqq();

	b1->f1(q1); //q1 静态类型是 qq
	b1->f1(new sonqq()); //new sonqq() 是 sonqq

	return 0;
}

  

posted @ 2017-09-27 16:50  hertz0725  阅读(503)  评论(0编辑  收藏  举报