推荐答案
纯虚函数 (Pure Virtual Function)
纯虚函数是在基类中声明但不定义的虚函数。它的声明方式是在函数声明的末尾加上 = 0。纯虚函数的主要目的是强制派生类必须实现该函数。如果一个类包含至少一个纯虚函数,那么这个类就是抽象类。
class Base {
public:
virtual void show() = 0; // 纯虚函数
};抽象类 (Abstract Class)
抽象类是指包含至少一个纯虚函数的类。抽象类不能被实例化,只能作为基类被继承。派生类必须实现基类中的所有纯虚函数,否则派生类也会成为抽象类。
class Derived : public Base {
public:
void show() override {
std::cout << "Derived class implementation" << std::endl;
}
};本题详细解读
纯虚函数的作用
纯虚函数的主要作用是定义一个接口,强制派生类实现该接口。这样可以确保所有派生类都具有某种行为或功能。纯虚函数通常用于设计模式中的接口类或抽象基类。
抽象类的特性
- 不能实例化:抽象类不能直接创建对象,只能通过派生类来实例化。
- 强制派生类实现纯虚函数:派生类必须实现基类中的所有纯虚函数,否则派生类也会成为抽象类。
- 多态性:通过基类指针或引用调用纯虚函数时,实际调用的是派生类的实现。
示例代码解析
// www.javascriptcn.com code example
#include <iostream>
class Base {
public:
virtual void show() = 0; // 纯虚函数
};
class Derived : public Base {
public:
void show() override {
std::cout << "Derived class implementation" << std::endl;
}
};
int main() {
// Base obj; // 错误:不能实例化抽象类
Derived obj;
obj.show(); // 输出: Derived class implementation
Base* ptr = &obj;
ptr->show(); // 输出: Derived class implementation
return 0;
}在这个示例中,Base 类是一个抽象类,因为它包含一个纯虚函数 show()。Derived 类继承自 Base 并实现了 show() 函数。通过基类指针 ptr 调用 show() 时,实际调用的是 Derived 类的实现,展示了多态性的特性。