虚函数和纯虚函数

1虚函数是推迟绑定的,基类中有一个虚函数,儿子和孙子都实现了这个虚函数,那么儿子和孙子的对象调用这个实现的虚函数,都是调用本身的函数,
2如果基类中有虚函数(不是纯虚函数)对象还是可以进行实例化的,他也可以调用自身定义的虚函数,实际执行的还是本身的函数。如:
class A
{
int data;
public :
virtual void ff() ;//虚函数,他有定义。
void xx();
A(int );
};

				A::A(int a)
				{
					data = a;
				}
				
				void A::ff()
				{
					cout<<"这是基类ff()"<<endl;
				}
				
				void A::xx()
				{
					cout<<"这是A的xx()"<<endl;
				
				}

如果是纯虚函数的话,不能实例化,如:
class A
{
int data;
public :
virtual void ff() = 0;//纯虚函数:没有定义
void xx();
A(int );
};

				A::A(int a)
				{
					data = a;
				}	
				void A::xx()
				{
					cout<<"这是A的xx()"<<endl;
				}

3在使用基类的指针指向派生类时(或引用时),一定要是public继承才行;
如:
class A
{
。。。。
};

						class B:A       ///会报错的;
						{
							。。。。
						};
							A* aa = new C(1, 7, 9);

正确的写法:
class A
{
。。。。
};

						class B: public A 
						{
							。。。。
						};
							A* aa = new C(1, 7, 9);

(以下没有特别说明的虚函数都是只虚函数(非纯虚函数));
4有一个基类有一个虚函数,儿子和孙子都实现了这个虚函数,当基类的指针指向儿子和孙子时,当基类调用这个虚函数时,实际指向的是儿子,则调用儿子的函数,实际指向的是孙子,则调用孙子的函数。
5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值