【从 C 向 C++ 进阶】- 类 - 21. 纯虚函数

本文探讨了C++中的抽象类和纯虚函数的概念。抽象类不能实例化,常用于作为基类提供接口。纯虚函数是抽象类的组成部分,不包含实现,子类必须实现这些纯虚函数。接口是一种特殊的抽象类,无成员变量且所有成员函数都是公共纯虚函数。

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

1. 抽象类与纯虚函数

抽象类为无实例的类,提出抽象类的意义是满足现实中一些概念的定义,例如:图形、人、动物等。抽象类不能用于创建对象,只能用于作为父类继承。抽象类通过纯虚函数实现,凡拥有纯虚函数的类均称为抽象类。

纯虚函数是指只声明函数原型不定义实现的成员函数,声明方法为:

virtual void fun() = 0;

其中“= 0”是用于告诉编译器当前是声明纯虚函数,不需要定义函数体。

特殊的,当纯虚函数为抽象类的析构函数时,仍需定义函数体。

抽象类与纯虚函数的关系:

  • 抽象类只能用作父类被继承。
  • 子类必须实现纯虚函数的具体功能。如果子类没有实现纯虚函数,则子类便成为抽象类
  • 纯虚函数被实现后成为虚函数。
  • 实验:
class Parent 
{
public:
	virtual void Print() = 0;
};

class Child : public Parent
{
public:
	virtual void Print()
	{
		cout << "in Child" << endl;
	}
};

int main(int argc, char *argv[])
{	
	// Parent parent_obj;		// error: cannot declare variable ‘parent_obj’ to be of abstract type ‘Parent’
	Child child_obj;
}

2. 接口

接口为特殊的抽象类,遵循以下规则:

  • 类中无任何成员变量。
  • 所有成员函数为公有属性。
  • 所有成员函数为纯虚函数。
  • 示例:
class Channel
{
public:
    virtual bool open() = 0;
    virtual void close() = 0;
    virtual bool send(char* buf, int len) = 0;
    virtual int recive(char* buf, int len) = 0;
};

更多从 C 向 C++ 进阶系列博文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值