C++的虚函数与纯虚函数

C++的虚函数是一种特殊的成员函数,用于实现多态性。虚函数允许在基类中声明一个函数,在派生类中根据需要进行重写,并通过基类指针或引用来调用派生类对象的特定实现。

①虚函数的声明

②多态性

③派生类重写虚函数

④纯虚函数

⑤注意


①虚函数的声明

在基类中,我们可以使用关键字virtual来声明一个虚函数。

cpp 复制代码
class Base {
public:
    virtual void show() {
        cout << "This is the Base class." << endl;
    }
};

②多态性

通过将一个基类的指针或引用指向其派生类的对象,可以实现多态性。

通过将基类指针ptr指向派生类对象derivedObj,我们可以通过调用虚函数show()来实现多态性。运行时会根据实际对象的类型选择正确的实现。

cpp 复制代码
Base* ptr;  // 基类指针
Derived derivedObj;  // 派生类对象

ptr = &derivedObj;  // 将基类指针指向派生类对象

// 调用虚函数,根据对象的实际类型执行不同的实现
ptr->show();

③派生类重写虚函数

派生类可以重写基类中的虚函数,以提供自己的实现。重写的函数必须具有相同的名称、返回类型和参数列表。

cpp 复制代码
class Derived : public Base {
public:
    void show() override {
        cout << "This is the Derived class." << endl;
    }
};

④纯虚函数

虚函数也可以被声明为纯虚函数,即没有默认实现的虚函数。纯虚函数通过在声明中使用= 0来标识。包含纯虚函数的类称为抽象类,它不能实例化,只能作为基类来派生其他类。

cpp 复制代码
class AbstractBase {
public:
    virtual void show() = 0;  // 纯虚函数
};

⑤注意

  • 虚函数只能在类的成员函数中使用。
  • 虚函数使用动态绑定,即运行时将根据对象的实际类型选择正确的函数实现。
  • 构造函数不能是虚函数。
  • 静态成员函数不能是虚函数。
  • 虚函数可以被继承,派生类可以选择是否重写虚函数。
相关推荐
John_ToDebug2 小时前
浏览器扩展延迟加载优化实战:如何让浏览器启动速度提升50%
c++·chrome·windows
是娇娇公主~2 小时前
C++ 中 std::deque 的原理?它内部是如何实现的?
开发语言·c++·stl
SuperEugene2 小时前
Axios 接口请求规范实战:请求参数 / 响应处理 / 异常兜底,避坑中后台 API 调用混乱|API 与异步请求规范篇
开发语言·前端·javascript·vue.js·前端框架·axios
xuxie993 小时前
N11 ARM-irq
java·开发语言
wefly20174 小时前
从使用到原理,深度解析m3u8live.cn—— 基于 HLS.js 的 M3U8 在线播放器实现
java·开发语言·前端·javascript·ecmascript·php·m3u8
luanma1509804 小时前
PHP vs C++:编程语言终极对决
开发语言·c++·php
寂静or沉默4 小时前
2026最新Java岗位从P5-P7的成长面试进阶资源分享!
java·开发语言·面试
csdn_aspnet4 小时前
C/C++ 两个凸多边形之间的切线(Tangents between two Convex Polygons)
c语言·c++·算法
kyriewen115 小时前
给浏览器画个圈:CSS contain 如何让页面从“卡成PPT”变“丝滑如德芙”
开发语言·前端·javascript·css·chrome·typescript·ecmascript
娇娇yyyyyy5 小时前
QT编程(18): Qt QItemSelectionModel介绍
开发语言·qt