C++ 纯虚函数2025年8月29日 | 阅读 7 分钟 在 C++ 中,纯虚函数是在基类中声明的虚函数,派生类必须重写它。函数声明以 = 0 结尾,这表示它不能在类体内包含任何默认实现。但是,如果需要,它仍然可以在类体外部定义。 任何继承自基类的类都必须定义该函数。如果一个类至少有一个纯虚函数,它就被认为是抽象类,不能直接用来创建对象。抽象类充当其他类的蓝图,确保派生类提供必要的功能。 语法它具有以下语法。 在这个语法中,
C++ 纯虚函数示例让我们以一个例子来说明 C++ 中的纯虚函数。 示例编译并运行输出 The area of the Circle is: 153.938 The area of the Rectangle is: 195 The area of the Triangle is: 27 说明 在此示例中,我们使用抽象基类 Shape 中的名为 calculatingArea() 的纯虚函数来显示运行时多态。Circle、Rectangle 和 Triangle 类重写此函数以计算并显示它们各自的面积。 纯虚函数的特点纯虚函数在 C++ 中有几个特点。主要特点如下:
关于 C++ 纯虚函数的有趣事实关于 C++ 纯虚函数有一些有趣的方面。其中一些如下: 1) 派生类中不允许移除在 C++ 中,基类中声明的纯虚函数不能在派生类中移除或留空。每个子类都必须提供实际的实现;否则,它就是抽象的。 说明 在此示例中,派生类必须重写纯虚函数才能成为一个完整的(非抽象)类。 2) 不能实例化抽象类任何包含至少一个纯虚函数的类都被视为抽象类,不能直接创建。 示例编译并运行输出 main.c:9:12: error: cannot declare variable 'obj_1' to be of abstract type 'Parent' 说明 在此示例中,抽象类对象由于缺少实现而不完整,无法创建。 3) 派生类中必须重写在 C++ 中,派生类必须重写所有纯虚函数。如果省略,派生类将变成抽象类,也无法实例化。 示例编译并运行输出 Child implementation 说明 在此示例中,子类重写了该函数,这使得它可以被创建和使用。 4) 基类可以有构造函数在 C++ 中,如果基类包含纯虚函数,它仍然可以有构造函数。当创建派生类对象时,将执行此构造函数。 示例编译并运行输出 Parent constructor Child run function 说明 在此示例中,我们首先调用父类构造函数,然后调用子类函数。 5) 在基类中定义纯虚函数是非法的在 C++ 中,在基类中内联定义纯虚函数是非法的。但是我们可以将其定义在类外部。 示例编译并运行输出 Compilation Error 说明 在此示例中,纯虚函数旨在由派生类实现,而不是由父类本身实现。 纯虚函数的优点C++ 中纯虚函数的几个优点如下:
纯虚函数的缺点C++ 中纯虚函数的几个缺点如下:
C++ 纯虚函数选择题1) 以下哪个选项是 C++ 纯虚函数的最佳定义?
答案:c) virtual void show() = 0; 2) 在类中声明纯虚函数的目的是什么?
答案:d) 要求派生类重写该函数 3) 在 C++ 中,当派生类未重写纯虚函数时会发生什么?
答案:a) 派生类变成抽象类。 4) 以下关于抽象类的说法在 C++ 中是正确的?
答案:d) 至少应有一个纯虚函数 5) 为什么 C++ 对纯虚函数强制执行编译时测试?
答案:b) 及早检测缺失的实现 下一个主题C++ 中重写成员函数 |
C++ 提供了一些基本的数学函数,使用这些函数所需的头文件是 <math.h>。三角函数方法描述 cos(x) 计算 x 的余弦值。 sin(x) 计算 x 的正弦值。 tan(x) 计算 x 的正切值。 acos(x) 查找 x 的反余弦值。 asin(x) 查找 x 的反正弦值。 atan(x) ...
阅读 3 分钟
在 C++ 中,static 是一个关键字或修饰符,属于类型而不是实例。因此,不需要实例来访问静态成员。在 C++ 中,static 可以是字段、方法、构造函数、类、属性、运算符和事件。C++ 对各种函数使用 static 关键字...
阅读9分钟
在 C++ 中,友元函数是一个非成员函数,它可以访问类的私有和保护成员。该函数使用 friend 关键字在类中声明为友元。如果我们想将一个函数声明为友元...
阅读 10 分钟
教程 编译器 程序 OOPs STL 面试题 C++ 中的 OOPs (面向对象编程) 概念 主要目的是 C++ 编程是为了将面向对象概念引入 C 编程语言。对象...
阅读 10 分钟
在 C++ 编程中,this 是一个关键字,它引用类的当前实例。类对象可以在其成员函数中使用此指针访问自身。理解 this 指针是在我们需要在面向对象结构中进行操作时的关键前提...
阅读 10 分钟
在 C++ 编程语言中,类和对象是导致 C++ 面向对象编程的基础构建块。它们以更有条理、可重用和可维护的方式提供代码。在 C++ 中,类充当定义对象如何构造的蓝图...
11 分钟阅读
在 C++ 中,成员函数是定义在类内部并与该类的对象关联的函数。它提供对类成员的访问,并可以直接操作和修改它们。这些函数定义了对象的行为,并且可以...
11 分钟阅读
在面向对象编程中,继承是最强大的概念之一。它允许一个类继承另一个类的特性和行为。重写是 C++ 编程中用于修改派生类中继承的成员函数行为的一种技术。在...
阅读 4 分钟
在 C++ 中,结构体是用于创建结构化对象的用户定义类型。它们允许我们将不同数据类型的变量收集到一个名称下。结构体用于轻量级对象,例如矩形、颜色、点等。在 C++ 中,结构体可以包含数据...
阅读 8 分钟
在 C++ 中,枚举 (Enum) 是一种用户定义的数据类型,包含一组固定的命名整数常量。我们可以使用 enum 关键字定义枚举。它有助于使代码更具可读性和可维护性。它可以用于星期(周日、周一、周二、...)
7 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India