21xrx.com
2024-11-22 08:03:58 Friday
登录
文章检索 我的文章 写文章
C++的纯虚函数
2023-07-01 08:46:06 深夜i     --     --
C++ 纯虚函数 抽象类 接口 实现类

C++是一种面向对象编程语言,它的重要特征之一就是抽象类和纯虚函数。在C++中,一个抽象类是指至少包含一个纯虚函数的类。这个类不能被直接实例化,而只能被用作其他类的基类。

纯虚函数是一种没有任何实现的虚函数,也就是说,它没有函数体。相反,它的目的是让子类来实现这个函数,以便实现多态性。在抽象类中声明纯虚函数可以强制子类实现该函数,这也是让子类与父类完全解耦的方法之一。

在C++中,声明纯虚函数的语法是在函数声明之后加上=0,例如:


virtual void draw() = 0;

这意味着这个函数是一个纯虚函数,它没有任何实现。任何继承这个抽象类的子类都必须覆盖这个函数,否则它将无法编译。

实际上,在C++中,可以将已经实现的虚函数重构为纯虚函数。这个过程分两步:

1. 将函数声明为纯虚函数,既可以加上=0,也可以在函数声明后加上关键字virtual和符号=0。


virtual void draw() = 0;

2. 去掉函数体,就可以实现重构。


virtual void draw() = 0 {};

需要指出的一点是,纯虚函数本身没有实际的用途,它只有在抽象类中才有意义。如果你试图创建一个纯虚函数的实例,编译器将抛出一个错误,因为纯虚函数是无法被实例化的。

最后,需要注意的是,虽然在抽象类中声明默认的构造函数没有必要,但是它仍然是可行的。抽象类中的默认构造函数在默认情况下被编译器提供,什么都不做。然而,如果抽象类需要初始化成员变量,那么就需要自己定义构造函数。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复