一、虚函数

  • 概念:在函数前面加virtual,就是虚函数

虚函数的一些概念:

  • 只有成员函数才可定义为虚函数,友元/全局/static/构造函数都不可以

  • 虚函数需要在函数名前加上关键字virtual

  • 成员函数如果不是虚函数,其解析过程发生在编译时而非运行时

  • 派生类可以不覆盖(重写)它继承的虚函数

重写(覆盖)的概念与规则

  • 派生类重写(覆盖)基类中的函数,其中函数名,参数列表,返回值类型都必须一致,并且重写(覆盖)的函数是virtual函数

  • 虚函数在子类和父类中的访问权限可以不同

  • 相关规则:

    • ①如果虚函数的返回值类型是基本数据类型:返回值类型必须相同

    • ②如果虚函数的返回值类型是类本身的指针或引用:返回值类型可以不同,但派生类的返回值类型小于基类返回值类型

    • 基类与派生类的虚函数名与参数列表相同,至于参数列表为什么一致是为了避免虚函数被隐藏

    • 函数返回值有以下要求:

class A {public:int a;public:A(int num) :a(num) {};virtual A& func() {}; //虚函数};class B:public A{public

C++:44---关键字virtual、override、final相关推荐

  1. override,final的使用,两者都是针对虚函数,也就是说要有virtual关键字

     1.override,final的使用,两者都是针对虚函数,也就是说要有virtual关键字 #include <iostream> //C++中的final和override主要是 ...

  2. C++11强类型枚举,override/final

    C++11(一)开篇 这个系列主要介绍C++11的一些新的特性,C++11问世至今已经有将近十年了.但是许多公司仍然停留在C++98上.之前在部门分享过C++11的知识,在这里分享给有需要的人. C+ ...

  3. c++ 11 override final

    C++ 11添加了两个继承控制关键字:override和final. override确保在派生类中声明的重载函数跟基类的虚函数有相同的签名.final阻止类的进一步派生和虚函数的进一步重载 出处:h ...

  4. 谈谈C#中的三个关键词new , virtual , override(装载 Winner.Net)

    C#支持单继承,说到继承就不得不说new,virtual和override这三个关键词,灵活正确的使用这三个关键词,可以使程序结构更加清晰,代码重用性更高. 以下是msdn中对new,virtual和 ...

  5. 谈谈C#中的三个关键词new , virtual , override

    谈谈C#中的三个关键词new , virtual , override C#支持单继承,说到继承就不得不说new,virtual和override这三个关键词,灵活正确的使用这三个关键词,可以使程序结 ...

  6. C#关键字——virtual浅见

    C#关键字--virtual的浅见 本篇文章主要讲解c#中virtual关键字的用法,希望对远道而来您能有一些帮助,准备好了嘛?那么咱们就一起开车喽! ---------------------- 1 ...

  7. 你了解c++中的关键字virtual吗?

    virtual在英文中表示"虚"."虚拟"的含义.c++中的关键字"virtual"主要用在两个方面:虚函数与虚基类.下面将分别从这两个方面 ...

  8. c++关键字virtual的用法(面试)

    一.基础概念 我们知道,函数重载,运算符重载,模板属于编译时的多态形式,而虚函数则是运行时的多态形式.因此,在这里我们先来介绍一下什么时静态联编和动态联编. 静态联编 函数的重载,运算符的重载在编译器 ...

  9. c++ override final关键字

    final: 1.一个类或结构体不希望被继承 class Base final {};class Derive : public Base {}; 报错信息如下: 1.cpp:34:7: error: ...

  10. C# 关键字 virtual、override和new的用法

    代码如下: class A {public void foo(){Console.WriteLine("A::foo()");}public virtual void bar(){ ...

最新文章

  1. 计算机音乐情深深雨蒙蒙,情深深雨蒙蒙 MIDI File Download :: MidiShow
  2. ionic开发:第一步
  3. linux 内核驱动模块的编译及加载
  4. JSplitPane
  5. c语言推箱子文字说明,c语言 推箱子(C language Sokoban).doc
  6. .NET下如何拦截鼠标、键盘消息?Win32NET来帮你
  7. web-软件架构模式-mvc与mtv
  8. css3弹性盒模型flex快速入门与上手(align-content与align-items)
  9. JTT1078-2016道路运输车辆卫星定位系统视频通信协议-音视频上传部分
  10. 笔记本不用fn也能用功能键
  11. 拔丝芋头的Java学习日记--Day3
  12. 做一个jQuery插件---带“旋转木马”效果的轮播图
  13. 【旅游类APP源码】开发者案例开源,走过路过不可错过!
  14. XJTU第十三周大计基编程作业
  15. 什么是智能卡与IC卡
  16. 读懂你的大脑——漫话神经元
  17. 英文翻译法语-英文法语翻译软件
  18. 超简单教你在树莓派上安装opencv(二)
  19. 批量下载图片的插件-免费自动下载图片的插件
  20. 山东财经大学python期末考试题型_山东财经大学2012012学年第二学期期末试题

热门文章

  1. MATLAB 求曲线长度
  2. 零基础Unreal Engine 4(UE4)图文笔记之粒子系统
  3. cmake学习(二)常用变量和常用环境变量
  4. Linux编程练习 --多线程2--属性的设置
  5. 进程控制2--exec族
  6. java构建内存池队列_内存池完整实现代码及一些思考
  7. python dataframe 新列_Python第二十四课:Pandas库(四)
  8. Idea报错,但是项目可以正常启动运行
  9. 机器学习复制粘贴笔记要点
  10. c#进阶(5)—— WCF 实现简单预订功能