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

从 C 向 C++ 进阶系列导航


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;
};
发布了60 篇原创文章 · 获赞 36 · 访问量 5938

猜你喜欢

转载自blog.csdn.net/qq_35692077/article/details/99483226
今日推荐