[转]C++使用虚函数的时候,子类也要使用virtual关键字吗
原文地址:https://blog.csdn.net/gao1440156051/article/details/45670715
父类使用虚函数是为了让子类重写,那子类重写的时候也需要带virtual关键字吗?比如:
class Base{
virtual bool init();
};
class Derived{
virtual bool init(); //这里的vitual是必须的吗?好像不用也能编译通过呃…..
};
c++规定,当一个成员函数被声明为虚函数后,其派生类中的同名函数都自动成为虚函数。因此,在子类从新声明该虚函数时,可以加,也可以不加,但习惯上每一层声明函数时都加virtual,使程序更加清晰。
#include <iostream> #include <unordered_map> using namespace std; class BaseClass { public: virtual void SayHello() { cout << "BaseClass" << endl; } }; class SonClass : public BaseClass { public: void SayHello() { cout << "SonClass" << endl; } }; class GrandSonClass : public SonClass { public: void SayHello() { cout << "GrandSonClass" << endl; } }; int main() { BaseClass* ptr = new GrandSonClass(); ptr->SayHello(); //输出: GrandSonClass (子类没用virtual, 孙子类依然有virtual效果) system("pause"); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义