c++11 继承控制:final和override
c++11 继承控制:final和override
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> #include <vector> #include <map> // C++11之前,一直没有继承控制关键字,禁用一个类的进一步衍生比较麻烦。 /* C++ 11添加了两个继承控制关键字:final和override。 final阻止类的进一步派生和虚函数的进一步重写 override确保在派生类中声明的函数跟基类的虚函数有相同的签名 在C++中,只要原来的返回类型是指向类的指针或引用,新的返回类型是指向派生类的指针或引用,覆盖的方法就可以改变返回类型。这样的类型称为协变返回类型(Covariant returns type). 返回类型的协变(covariance)指返回类型是接口或委托定义返回类型的子类, 参数类型的逆变(contravariance)是指实现的参数类型是接口或委托定义的参数类型的父类。 */ class B1 final {}; // 此类不能被继承 //class D1: public B1 {}; // error! class B { public: // virtual void func() override // error! 指定了重写但实际并没重写,没有基类 // { // std::cout << __func__ << std::endl; // } virtual void f() const { std::cout << __func__ << std::endl; } virtual void fun() { std::cout << __func__ << std::endl; } }; class D : public B { public: virtual void f(int) // ok! 隐藏,由于没有重写同名函数B::f,在D中变为不可见 { std::cout << "hiding: " <<__func__ << std::endl; } // virtual void f() override // error! 指定了重写但实际并没重写,类型声明不完全相同 // { // std::cout << __func__ << std::endl; // } virtual void fun() override final // ok! 指定了重写实际上也重写了,同时,指定为最终,后代类中不能再重写此虚函数 { std::cout << __func__ << std::endl; } }; class D2 : public D { public: virtual void f() const // ok! 重写B::f(),同时,由于没有重写D::f(int),在D2中变不可见 { std::cout << __func__ << std::endl; } // virtual void fun() // error! 基类的此虚函数被指定为最终,不能被重写,虽然没有显示指定"override" // { // std::cout << __func__ << std::endl; // } // virtual void fun() override // error! 基类的此虚函数被指定为最终,不能被重写 // { // std::cout << __func__ << std::endl; // } }; void mytest() { return; } int main() { mytest(); system("pause"); return 0; }
分类:
c++11
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南