C++:纯虚函数
创作时间:
作者:
@小白创作中心
C++:纯虚函数
引用
CSDN
1.
https://blog.csdn.net/WolvenSec/article/details/138590867
在 C++ 中,纯虚函数(pure virtual function)是一个在基类中声明为纯虚函数的虚函数(如果对虚函数不了解可以去我上一篇文章:C++:虚函数)。它在基类中没有默认实现,而是要求派生类提供实现。通过声明一个函数为纯虚函数,可以使基类成为抽象类,不能实例化,但可以作为其他类的基类。
类中纯虚函数的设置:
class Animal
{
public:
//纯虚函数
//virtual 函数返回类型 函数名(参数列表) = 0;
virtual void run() = 0;
};
在这个例子中,
Animal
类中声明了一个纯虚函数
virtual void run() = 0;
,这使得
Animal
类成为了抽象类,不能被实例化。此时如果在函数中创建
Animal
实例化对象则程序会直接报错:
纯虚函数为基类(抽象类)提供了一种定义接口的方式,通过声明纯虚函数,基类可以规定派生类必须实现的功能,而不需要提供具体的实现。这样可以确保派生类具有相同的接口,并且可以在系统中更容易地进行替换和扩展,同时也能够确保基类不能被实例化。
抽象类规定了派生类的功能实现
class Cat : public Animal
{
public:
Cat();
~Cat();
//强制功能实现
void run() {
std::cout << "Cat Run 函数" << std::endl;
}
}
派生类
Cat
继承了
Animal
类,并实现了纯虚函数
run()
;此时派生类可以在主程序中正常执行。
如果派生类为对继承下来的纯虚函数
run()
进行实现,那么此时在派生类中
run()
依旧是一个纯虚函数,即派生类是一个抽象类无法进行实例化:
class Animal
{
public:
Animal(){//构造函数};
~Animal(){//析构函数};
//纯虚函数
virtual void run() = 0;
};
class Cat : public Animal
{
public:
Cat();
~Cat();
}
总的来说,纯虚函数主要用于定义接口,它们强制派生类提供特定的功能实现,同时也能够确保基类不能被实例化,这样可以确保基类只能被用作派生类的模板,而不能单独存在。这样的设计有助于防止用户误用基类,保证了系统的健壮性和安全性。
热门推荐
2024年中国工业水处理行业发展现状及趋势分析
长沙发现规模最大东晋墓,29件"微笑"陶人俑,缘何从南京来到长沙?
温江柳浪湾小吃探秘:品味地道美食,邂逅舌尖上的浪漫
2025春运答卷:从“走得了”到“走得好”
2026年QS世界大学排名新增"国际学生多样性"指标,或将引发全球高校排名大洗牌
7天打造一套自己的程序交易系统-策略回测(1)
Midjourney风格提示词大放送:10种炫酷图片风格详解
中医鬼才倪海厦:59岁病死?弟弟解密死因,睡眠习惯为其死埋伏笔
狗狗放屁很臭?狗狗一直放屁正常嗎?狗狗放屁八大原因!
故宫为什么不能全面取消预约?
设计之道:八大要素打造高级感画面
土地与神祇|邑庙访碑录:徐光启与上海城隍庙
精罗是什么意思
CSGO开箱出金概率深度解析:从军规到传说级皮肤的获取几率
垂盆草:一种多功能的景天科植物
深入解析宏观经济学中的凯恩斯主义:理论框架与政策影响
九上必考名著《艾青诗选》知识点超全总结!
高铁钢轨数百公里没有缝,热胀冷缩咋办?不怕,中国有核心技术!
2025年最值得期待的10部动漫续集
OCR图像识别算法优化与性能提升策略
遭遇创伤后,如何对创伤应激障碍进行心理干预
多情只有春庭月:古典诗歌中的情思月华之美
历史悲歌的诗意沉思与人性探索:评周瑟瑟《韩非之死》
泉州市举办“我们的节日·七夕”主题活动暨第二届“陈三五娘”文化节
多款"哪吒同款"乾坤圈手镯在售 商家称未获官方授权 律师:可能侵犯著作权
《约会大作战》系列作品全回顾:从动画到剧场版的精彩历程
感冒后头晕的症状一直不消失怎么办?
湖人后浓眉时代的基本盘分析:三持球手与外线转型
《终末的后宫》深度解析:后宫题材如何融合末世生存与科技伦理
眼内出血如何治疗