一文弄懂虚函数和纯虚函数
创作时间:
作者:
@小白创作中心
一文弄懂虚函数和纯虚函数
引用
CSDN
1.
https://m.blog.csdn.net/qq_51350957/article/details/145336601
虚函数和纯虚函数是 C++ 中实现多态的核心机制。它们允许派生类重写基类的函数,从而实现运行时多态。
1. 虚函数
定义
虚函数是在基类中声明为 virtual
的成员函数,允许派生类重写(override)该函数。通过基类指针或引用调用虚函数时,实际调用的是派生类中的重写函数。
作用
- 运行时多态:通过基类指针或引用调用虚函数时,实际调用的是派生类中的重写函数。
- 灵活性:允许派生类根据需求重写基类的行为。
特点
- 可重写:派生类可以选择重写虚函数,也可以直接使用基类的实现。
- 非强制:派生类不一定要重写虚函数。
2. 纯虚函数
定义
纯虚函数是在基类中声明为 virtual
并且等于 0
的虚函数,例如 virtual void func() = 0;
。纯虚函数没有实现,派生类必须重写纯虚函数。
作用
- 定义接口:纯虚函数用于定义接口,要求所有派生类必须实现该函数。
- 抽象类:包含纯虚函数的类称为抽象类,不能实例化。
特点
- 强制重写:派生类必须重写纯虚函数,否则派生类也会成为抽象类。
- 接口定义:纯虚函数通常用于定义接口,强制派生类实现特定行为。
3. 虚函数与纯虚函数的区别
特性 | 虚函数 | 纯虚函数 |
---|---|---|
定义 | 在基类中声明为virtual的成员函数 | 在基类中声明为virtual并且等于0的函数 |
实现 | 可以有默认实现 | 没有实现,必须在派生类中重写 |
派生类重写 | 可选 | 必须重写 |
基类实例化 | 可以实例化 | 不能实例化(抽象类) |
用途 | 实现运行时多态 | 定义接口,强制派生类实现特定行为 |
虚函数示例
#include <iostream>
class Base {
public:
virtual void show() {
std::cout << "Base class show function\n";
}
};
class Derived : public Base {
public:
void show() override {
std::cout << "Derived class show function\n";
}
};
int main() {
Base* basePtr = new Derived();
basePtr->show(); // 输出: Derived class show function
delete basePtr;
return 0;
}
纯虚函数示例
#include <iostream>
class Base {
public:
virtual void show() = 0; // 纯虚函数
};
class Derived : public Base {
public:
void show() override {
std::cout << "Derived class show function\n";
}
};
int main() {
// Base baseObj; // 错误:不能实例化抽象类
Base* basePtr = new Derived();
basePtr->show(); // 输出: Derived class show function
delete basePtr;
return 0;
}
热门推荐
神似植物的小生命-苔藓虫
日常用的玻璃餐具都能放进微波炉加热吗?
热闹的日语怎么说:6种表达方式详解
充电时,先插手机还是充电器?这几种充电方法,手机坏得快!
4G物联网智能电表是什么?4G物联网智能电表的功能与优势详解
沈阳房地产市场趋势:新房与二手房价格双双下滑
什么是电子商务 要素
智慧校园包括哪些项目
Excel中折线图纵横坐标的0点相交设置方法
脂溶性维生素包括什么
中考“体考神器”氮泵热卖 多店销量超4万 有学生用后出现头晕
第一产业、第二产业和第三产业的定义与特点
考公务员和事业编内容有什么区别?公务员一定比较难吗?
森林防火知识,请牢记!
轮毂J值是什么?一文详解轮毂宽度与轮胎选择的关系
高尔夫一号木 如何选择适合自己的杆身硬度
美尼尔和耳石症区别
如何应对单据被拒付的情况
苏丹草种植养护指南:从选种到日常管理的全方位指导
从英特尔到AMD:深入解析多款CPU性能,帮你找到最适合自己的型号
建筑+水电站+变电站防雷接地工程综合方案
2025山东新高考英语作文多样化表达技巧
销量占比首超燃油车!新能源车取代燃油车成定局?专家分析
毒瘾发作是什么症状
中医药亮相JAMA权威期刊:神奇功效揭秘,降低糖尿病风险高达41%!
元素家族的扩容:稀有气体的发现如何改写化学教科书
崩坏星穹铁道配置要求,崩坏星穹铁道最低配置要求揭秘
塔罗牌力量正位详解及意义探析
脂肪消耗与运动强度,具体有什么关联?知晓后,减脂事半功倍
重装系统之前,如何保护自己的微信聊天记录?