虚函数、纯虚函数和抽象类

虚函数

定义:虚函数的调用并不是在编译时刻被确定的,而是在运行时刻被确定的。由于编写代码的时候并不能确定被调用的是基类的函数还是派生类的函数,所以被成为"虚"函数。父类中提供虚函数的实现,为子类提供默认的函数实现,子类可以重写父类的虚函数实现子类的特殊化。

写法:

class A
{
public:
	virtual void foo()
	{
		cout << "基类的虚函数" << endl;
	}
};
class B :public A
{
public:
	void foo()
	{
		cout << "子类重写" << endl;
	}
};

纯虚函数

定义:纯虚函数是在基类中声明的虚函数,它在基类中只有声明,没有定义,但要求任何派生类都要定义自己的实现方法,是对派生类的一种约束

写法:

class Animal
{
public:
	virtual void Say() = 0;  //基类声明纯虚函数  在虚函数后面加 =0
};

class Dog :public Animal
{
public:
	void Say()  //派生类中重写基类的纯虚函数
	{
		cout << "这是dog" << endl;
	}
};

抽象类

动物作为一个基类可以派生出狗、猫等派生类,但动物本身生成对象明显不合常理。这时就出现了抽象类,抽象类就是是一种不能实例化的类。

形成场景:
1、基类中含有纯虚函数
2、派生类中没有定义基类的全部纯虚函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值