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();
}
总的来说,纯虚函数主要用于定义接口,它们强制派生类提供特定的功能实现,同时也能够确保基类不能被实例化,这样可以确保基类只能被用作派生类的模板,而不能单独存在。这样的设计有助于防止用户误用基类,保证了系统的健壮性和安全性。
热门推荐
夏主编教你打造完美自驾游路线图
秋冬护肤新选择:牛油果面膜和护发精油DIY攻略
墨西哥牛油果热潮背后的生态危机
牛油果:不只是食物!
补肺丸真的有效果吗?
关注支气管哮喘,与哮喘和谐共处
东京、西京、南京和北京:中国历史上的“四京”渊源
漳州发力低空经济:企业创新与政策支持双轮驱动
北京试点共享电单车:机遇与挑战并存
中国航天新突破:揭秘航天器制造中的铁熔点要求
葫芦娃性格大揭秘:谁是你心中的MVP?
葫芦娃教你如何带孩子玩转团队合作
葫芦娃新番来袭!观众最期待哪个角色?
葫芦娃:一部承载传统文化的动画经典
爆改经典菜系味道~鲜虾牛肉煲
从《大灰狼才应该小心》看邓慧狼的多面性格
盘点《封神演义》中牛类神兽坐骑:青牛、奎牛、五色神牛的解析
封神榜十大最强坐骑:四不像垫底,元始天尊的九龙沉香辇仅排第三
盘点《封神演义》中牛类神兽坐骑:青牛、奎牛、五色神牛的解析
郑州:国家安全的关键锁钥
葱烧辽参:鲁菜经典中的至味佳肴
葱烧大连海参,你get了吗?
王者荣耀S35赛季铠英雄上分攻略
秋冬养生正当时:潮汕特色美食推荐
潮汕美食探秘:千年古城的养生密码
元宵佳节,给爸爸妈妈最暖心的祝福!
池塘蓝藻用什么药除最好?如何杀灭池塘的蓝藻?试试这套方法
罗氏沼虾塘爆发蓝藻该怎么处理?罗氏虾塘蓝藻怎么治?这里有神器
车主必读:选择发动机防冻液时的关键指标和注意事项解析
舌苔厚发白?了解背后真相,别再误以为只是上火!