C++:纯虚函数

在 C++ 中,纯虚函数(pure virtual function)是一个在基类中声明为纯虚函数的虚函数(如果对虚函数不了解可以去我上一篇文章:C++:虚函数)。它在基类中没有默认实现,而是要求派生类提供实现。通过声明一个函数为纯虚函数,可以使基类成为抽象类,不能实例化,但可以作为其他类的基类。

类中纯虚函数的设置:

cpp 复制代码
class Animal
{
public:

    //纯虚函数
    //virtual 函数返回类型 函数名(参数列表) = 0;
    virtual void run() = 0;
 };

在这个例子中,Animal 类中声明了一个纯虚函数 virtual void run() = 0;,这使得 Animal 类成为了抽象类,不能被实例化。此时如果在函数中创建Animal实例化对象则程序会直接报错:

纯虚函数为基类(抽象类)提供了一种定义接口的方式,通过声明纯虚函数,基类可以规定派生类必须实现的功能,而不需要提供具体的实现。这样可以确保派生类具有相同的接口,并且可以在系统中更容易地进行替换和扩展,同时也能够确保基类不能被实例化。

抽象类规定了派生类的功能实现
cpp 复制代码
class Cat : public  Animal
{
public:
    Cat();
    ~Cat();
    
    //强制功能实现
    void run() {
        std::cout << "Cat Run 函数" << std::endl;
    }
}

派生类 Cat 继承了 Animal 类,并实现了纯虚函数 run() ;此时派生类可以在主程序中正常执行。

如果派生类为对继承下来的纯虚函数 run() 进行实现,那么此时在派生类中run() 依旧是一个纯虚函数,即派生类是一个抽象类无法进行实例化:

cpp 复制代码
class Animal
{
public:
    Animal(){//构造函数};
    ~Animal(){//析构函数};
    //纯虚函数
    virtual void run() = 0;
 };
 
class Cat : public  Animal
{
public:
    Cat();
    ~Cat();
}

总的来说,纯虚函数主要用于定义接口,它们强制派生类提供特定的功能实现,同时也能够确保基类不能被实例化,这样可以确保基类只能被用作派生类的模板,而不能单独存在。这样的设计有助于防止用户误用基类,保证了系统的健壮性和安全性。

相关推荐
努力的小帅2 分钟前
C++_红黑树树
开发语言·数据结构·c++·学习·算法·红黑树
CN-Dust3 分钟前
【C++】指针
开发语言·c++
hweiyu006 分钟前
学习Scala语言的最佳实践有哪些?
开发语言·学习·scala
逐花归海.16 分钟前
『 C++ 入门到放弃 』- 哈希表
数据结构·c++·程序人生·哈希算法·散列表
许野平22 分钟前
Rust:anyhow::Result 与其他 Result 类型转换
服务器·开发语言·rust·result·anyhow
筏.k22 分钟前
C++现代Redis客户端库redis-plus-plus详解
c++·redis
IT摆渡者33 分钟前
Wireshark攻防实战
linux·服务器·经验分享·笔记
Sammyyyyy42 分钟前
Node.js 是怎么一步步撼动PHP地位的
开发语言·node.js·php
lly2024061 小时前
Node.js 路由
开发语言
程序员编程指南1 小时前
Qt 多线程调试技巧与常见问题
c语言·开发语言·c++·qt