C++ override 关键字用法
来源:互联网 发布:姚劲波的域名 编辑:程序博客网 时间:2024/06/06 01:53
- override关键字作用:
如果派生类在虚函数声明时使用了override描述符,那么该函数必须重载其基类中的同名函数,否则代码将无法通过编译。 - 举例子说明
struct Base { virtual void Turing() = 0; virtual void Dijkstra() = 0; virtual void VNeumann(int g) = 0; virtual void DKnuth() const; void Print();};struct DerivedMid: public Base { // void VNeumann(double g); //接口被隔离了,曾想多一个版本的VNeumann函数};struct DerivedTop : public DerivedMid { void Turing() override; void Dikjstra() override; //无法通过编译,拼写错误,并非重载 void VNeumann(double g) override; //无法通过编译,参数不一致,并非重载 void DKnuth() override; //无法通过编译,常量性不一致,并非重载void Print() override; //无法通过编译,非虚函数重载};
(之前听过,但是没看过结构体重载 ==)
- 如果没有使用override关键字,上面的写法编译可以通过但是运行的效果与真实意愿(希望重载)不符
- 举例子说明
class testoverride{public: testoverride(void); ~testoverride(void); virtual void show() const = 0; virtual int infor() = 0; virtual void test() = 0; virtual int spell() = 0;};class B: public testoverride{public: virtual void show(); //1 virtual void infor(); //2 virtual void vmendd(); //3virtual void test(int x);//4virtual void splle(); //5 };
上面的1-5个重载函数编译过程中,除了返回值不同的infor会报错以外,其他函数都不会有问题,但是在类实例化的时候会提示是抽象类,因为他们都没有真正实现重载
class C: public testoverride{public: virtual void show() override; virtual void infor() override; virtual void vmendd() override; virtual void test(int x) override; virtual void splle() override;};
添加了override以后,会在编译器override修饰符则可以保证编译器辅助地做一些检查,上面的情况无法通过编译
- 结论
如果派生类里面是像重载虚函数 就加上关键字override 这样编译器可以辅助检查是不是正确重载,如果没加这个关键字 也没什么严重的error 只是少了编译器检查的安全性
0 0
- C++ override 关键字用法
- C++, JAVA没有 override关键字 C# 有override关键字
- @Override 关键字
- C语言关键字用法
- c#partial关键字用法
- C#.NET中new, override, virtual abstract关键字的区别
- @Override用法
- C#static关键字用法总结
- C语言关键字volatile用法
- C语言关键字const用法
- c语言const关键字用法
- C#static关键字用法总结
- C# 关键字extern用法
- C++: __declspec关键字详细用法
- c/c++关键字typedef用法
- C/C++ extern关键字用法
- 【C++】static关键字用法总结
- 【C++】const关键字用法总结
- window安装python,ipython,pycharm
- Mysql (三) - 视图、字符集、校对集、触发器
- Django 错误 code 400, message Bad request syntax
- holder.js生成占位图片
- 阿里云ECS Linux通过Xshell 配置密钥key免密码登录
- C++ override 关键字用法
- Python文件操作读写文件
- 设置form表单传输的编码格式 application/x-www-form-urlencoded、multipart/form-data、text/plain
- java开源框架SpringSide 3.1.4.3开发Web的demo项目实战
- 微信公众平台——获取用户信息
- SVN命令常用技巧
- elasticsearch集群管理工具head插件
- 查看mysql语句运行时间的2种方法
- Pixhawk-开篇