虚函数的介绍

#include "stdafx.h"
#include <iostream>
using namespace std;

class B0 //基类B0声明
{public: //外部接口
virtual void display() //虚成员函数
{cout<<"B0::display()"<<endl;} 
};
class B1: public B0 //公有派生
{ public:
void display()  {  cout<<"B1::display()"<<endl;  }
};
class D1: public B1 //公有派生
{ public:
void display() {  cout<<"D1::display()"<<endl;  }
};

void fun(B0 *ptr) //普通函数
{    ptr->display();    }


int _tmain(int argc, _TCHAR* argv[])
{
	B0 b0,  *p; //声明基类对象和指针
	B1 b1; //声明派生类对象
	D1 d1; //声明派生类对象
	p=&b0;
	fun(p); //调用基类B0函数成员
	p=&b1;
	fun(p); //调用派生类B1函数成员
	p=&d1;
	fun(p); //调用派生类D1函数成员
	return 0;
}

 虚函数好处,写好代码后,基本不用改动代码,有一个共同的类里面根据不同的条件实例化不同的子类对象,在这里只有写成父类指针指向该虚方法,将来子类重新实现了。只有然共同的类中的条件满足新实现的子类虚函数的条件,就行了。最好条件写到别的地方,这样共同代码就不用动了。主要是虚函数,用父类的指针指向虚方法,实现的是子类的虚方法

只要父类定义为虚方法,子类不管声明不声明都是虚方法。new一个对象把该对象传给一个共同方法,这个方法里面就实现了一系列的操作。子类里面的虚方法越多。操作也多,好处也明显。

class() a1

{public:

virsual void fun1(){}

virsual  void fun2(){}

virsual  void fun3(){}

};

class() b1 public:a1

{public:

void fun1(){-----}

void fun2(){----} 

void fun3(){----}

}; 

class() c1 public:a1

{public:

void fun1(){-----} 

void fun2(){----}

void fun3(){----}

};

class() common

{public:

void com(a1* aa){

aa->fun1();

 aa->fun2();

 aa->fun3(); 

}

} ;

class() other

{public:

void work()

{

b1 bb = new b1;

common co ;

co.com(bb );

}

};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值