认识抽象类

文章介绍了纯虚函数,即带有`=0`的虚函数,使得包含它们的类成为抽象类。抽象类不能被实例化,主要用作基类来定义接口。派生类必须重写所有纯虚函数才能实例化。这种机制在设计面向对象程序时,提供了规范接口和强制实现的手段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1、纯虚函数的概念

2、抽象类的概念

3、抽象类的特性 

4、抽象类的实际应用 


1、纯虚函数的概念

被virtual关键字修饰的函数,我们称为虚函数;而在虚函数的后面加上 =0,那么这个函数被称为纯虚函数。

virtual void Drive() = 0;    // 纯虚函数

2、抽象类的概念

包含纯虚函数的类称为抽象类。抽象类中也可以包含虚函数和普通函数。

class Car
{
public:
    virtual void Drive() = 0;
};

3、抽象类的特性 

抽象类无法实例化出对象

抽象类包含纯虚函数,纯虚函数只有声明没有定义,无法实例化出对象。抽象类的作用只是提供一份大纲,具体实现细节交由抽象类的派生类来做。

抽象类的派生类必须重写纯虚函数

即便是子类继承了抽象类,也无法实例化,只有重写了所有的纯虚函数,才能实例化出对象。

4、抽象类的实际应用 

抽象类比较方便的地方在于,一方面设计基类的时候,只需要提供函数声明(或者说“接口”),无需手动去实现。具体要怎么去实现,派生类在实际调用的时候自己去实现。

另一方面,无需担心会忘记重写基类的虚函数,因为如果没有重写纯虚函数,是无法实例化的。

class Car
{
public:
	virtual void Drive() = 0;
	virtual void OilSensor() = 0;
	void FaultDetect() {
		cout << "fault detect" << endl;
	}
};

class Benz :public Car
{
public:
    // 必须实现基类所有的纯虚函数
	virtual void Drive() { cout << "Benz Drive" << endl; }		
	virtual void OilSensor() { cout << "Benz Drive" << endl; }
};

int main() {
	Benz benz;
	benz.Drive();
	benz.OilSensor();
	benz.FaultDetect();
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值