【c++11】override(重写)与final(最终)
来源:互联网 发布:linux创建文件夹进入 编辑:程序博客网 时间:2024/05/16 13:03
#include "stdafx.h"#include <iostream>// 标示符含义:// override,表示此虚函数必定“重写”了基类中的对应虚函数。// final,(1)作用在虚函数:表示此虚函数已处在“最终”状态,后代类必定不能重写这个虚函数。// (2)作用在类:表示此类必定不能被继承// 编译器将帮你检查是否“必定”class B1 final {}; // 此类不能被继承// class D1: public B1 {}; // error!class B{public:// virtual void func() override // error! 指定了重写但实际并没重写,没有基类// { // std::cout << __FUNCTION__ << std::endl;// }virtual void f() const { std::cout << __FUNCTION__ << std::endl;}virtual void fun() { std::cout << __FUNCTION__ << std::endl; }};class D : public B{public:virtual void f(int) // ok! 隐藏,由于没有重写同名函数B::f,在D中变为不可见{ std::cout << "hiding: " <<__FUNCTION__ << std::endl; } // virtual void f() override// error! 指定了重写但实际并没重写,类型声明不完全相同// { // std::cout << __FUNCTION__ << std::endl; // } virtual void fun() override final // ok! 指定了重写实际上也重写了,同时,指定为最终,后代类中不能再重写此虚函数{ std::cout << __FUNCTION__ << std::endl; } };class D2 : public D{public:virtual void f() const // ok! 重写B::f(),同时,由于没有重写D::f(int),在D2中变不可见{ std::cout << __FUNCTION__ << std::endl;}// virtual void fun() // error! 基类的此虚函数被指定为最终,不能被重写,虽然没有显示指定"override"// {// std::cout << __FUNCTION__ << std::endl;// }// virtual void fun() override // error! 基类的此虚函数被指定为最终,不能被重写// {// std::cout << __FUNCTION__ << std::endl;// } };int _tmain(int argc, _TCHAR* argv[]){D2 d2;D d1;B *b = &d1;b->f();// B::fb->fun();// D::fun//d1.f();// error! B::f在D中不可见d1.f(10);// hiding: D::f//d2.f(10);// error! D::f(int)在D2中不可见d2.f();// D2::fd2.fun();// D::funreturn 0;}
0 0
- 【c++11】override(重写)与final(最终)
- 【C++11】final, override,重载,重写覆盖,重写隐藏
- C++11:override 与 final
- C++:override和final
- c++11 特性 final与override关键字
- c++11 final与override说明符
- 【C#】重载(overload)与重写(override)
- C++ 11 override final
- C++关键字final与override
- @Override与方法的重写
- 重写关键字override与new
- 重写(override)与重载(overload)
- 重写(Override)与重载(Overload)
- 重写(Override)与重载(Overload)
- 重载(overload)与重写(override)
- @Override重写与@Overload重载
- C++11新特性:final和override 子类重写父类方法
- 二、类的继承、public、protected、private、parent、重写override、最终类和最终方法
- windows2008远程重启
- 第36题 Compare Version Numbers
- mysql中文乱码的一点理解
- 美女图片站的简单制作过程
- VC6.0打开文件以及向工程中添加文件时程序崩溃自动退出
- 【c++11】override(重写)与final(最终)
- _stdcall, _cdecl的用法与区别
- SQL Server自动生成拼音首字母!!!
- ios 退出app
- 一个问题,学习笔记
- 如何迈过职业生涯的5个坎
- cocos2dx 3.2 自定义C++绑定Lua脚本问题
- 非标准maven工程的resource资源提交
- 右值引用 移动语义 完美转发