重写、覆盖、using、typedef

注意,重写覆盖并不是一个意思。

重写:

重写是虚函数在子类中重新定义,使用override,override也可以不写,加上override是规范,语义更清晰明白它是重写虚函数。

覆盖:

覆盖 是 子类定义 同名函数 覆盖 掉父类同名函数。

父类如果定义某非虚函数func1(int,int),子类定义了函数func1(double),那么子类不能再调用func1(2,3),因为子类只要定义了父类同名函数,不管他们参数类型和个数是否不同,都会隐藏父类的同名函数,相当于覆盖了父类的所有同名函数。

如果子类既要定义一个同名函数,又想使用父类的这个同名函数,c++11可以通过在子类中使用using 父类名::func1;即可。

同理,如果父类有几个复杂的构造函数,子类想继承父类所有构造函数,c++11可以在子类中使用 using 父类名::父类名;如:

class Base{public:Base();Base(const Base &){// 很复杂的一些初始化语句};func1(int,int);
};class Child : Base{public:using Base::Base;     //加上这句话,子类就继承了父类的所有构造函数using Base::func1();  // 加上这句话,就可以使用基类被覆盖(隐藏)的所有同名函数func1了。func1();              //该定义会直接覆盖掉基类所有同名函数func1.  解决办法就是使用上面的using Base::func1();
};

using 的用法:

using namespace std;
using namespaceA::namespaceB::func; // 调用命名空间B下的func()函数,该声明语句不要写成func(),不能加括号。using anotherName = int; //取别名。一般用在某类型特别长的时候,取个短点的别名。

注意区分typedef,typedef和using在取别名上作用基本一样,只是顺序不同,如:typedef int anotherName;
structclass的作用基本一样,但是常规用法是,struct访问类型默认是public,并且一般用在把一些变量封装成一个结构体变量。class就是通常的用法。

【c++】11.重写、覆盖、using、typedef相关推荐

  1. Java笔记013-IDEA、包、访问修饰符、封装、继承、多态、Super、方法重写/覆盖(override)、java的动态绑定机制

    目录 面向对象编程(中级部分) IDE(集成开发环境)-IDEA IDEA介绍 IDE(集成开发环境)-Eclipse Eclipse介绍 IDEA的安装 IDEA的基本介绍和使用 创建一个java项 ...

  2. Java---面向对象编程三大特征【封装、继承、多态】及super关键字、方法重写/覆盖(不定期更新补充)---B站韩顺平老师视频总结

    文章目录 三大特征 面向对象编程-封装 封装介绍 封装的理解和好处 封装的实现步骤(三步) 封装的简单案例 封装与构造器 封装的练习 面向对象编程-继承 为什么需要继承 继承基本介绍和示意图 继承的基 ...

  3. javascript原型的改动与重写(覆盖)区别

    每一个JavaScript函数都有prototype属性(javascript对象没有这个属性),这个属性引用了一个对象,这个对象就是原型对象.javascript同意我们改动这个原型对象. 改动有2 ...

  4. Java-Day12 面向对象的三大特征之封装、继承,单例模式(饿汉式、懒汉式)、方法重写 (覆盖)、注解 (annotation)、super关键字、对象的创建流程超详细

    目录 1. 面向对象的三大特征之封装 1.1 封装的含义 1.2 封装的目的 1.3 封装的优点 1.4 封装的实现过程 1.5 拓展知识:JavaBean 2. 面向对象的三大特征之继承 2.1 继 ...

  5. linux下enum类型占几个字节,第11课 - enum, sizeof, typedef 分析

    第11课 - enum, sizeof, typedef 分析 1. enum介绍 (1)enum是C语言中的一种自定义类型,和struct.union地位相同,格式如下: // enum每个值的最后 ...

  6. 剪不断理还乱--C#重载/重写/覆盖

    在实际的编程中会有很多类.方法.函数等出现同名的情况,造成了程序的可读性差的问题.为了避免这种问题的出现,C#提供了很多机制来区别或修改同名的函数或方法,如:命名空间.类名.重载和覆盖等.这篇博客将会 ...

  7. 一文读懂Java语言方法的重写(覆盖、Override)

    很多初学Java语言的小伙伴,在学到"面向对象"这块内容的时候,都会学到的一个概念,那就是"方法的重写".重写又叫覆盖,英文名为"Override&q ...

  8. C++重载(overload)和重写(覆盖)的区别?

    重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同). 重写:是指子类重新定义父类虚函数的方法. 从实现原理上来说: 重载:编译器根据函数不同的 ...

  9. 方法的重写-覆盖父类方法,重写子类方法实现

    class Animal:def eat(self):print("吃---")def drink(self):print("喝---")def run(sel ...

最新文章

  1. js 与或运算符 || 妙用
  2. OpenCV中的内存泄露问题(cvLoadImage,cvCloneImage)
  3. 自作的WM文件浏览器
  4. 如何设置网站标题更有利于网站SEO优化?
  5. 细说Sql Server中的视图(下)转载
  6. Application.DoEvents()的使用
  7. 买卖股票类问题动态规划解法(Leetcode题解-Python语言)
  8. 使用DistroTweaks复制您的自定义Linux设置
  9. 【零基础学Java】—ArrayList集合概述和基本使用(十四)
  10. php 扩展库 开发环境,PHP 扩展开发环境搭建
  11. java性能调试命令_性能测试必备监控技能jvm之jdk命令行工具篇16
  12. L1-036 A乘以B (5 分)—团体程序设计天梯赛
  13. 【Linux】linux下解压.xz文件
  14. resetlog oracle,用RMAN的全备恢复resetlog之前的数据
  15. 高分屏更改Adobe Premier CC UI界面字体大小
  16. 锐捷服务器虚拟化技术_锐捷核心交换机VSU虚拟化配置
  17. 计算机cmd复制粘贴指令,cmd命令提示符窗口中快速复制粘贴的方法
  18. kuma可视化监控旗下所有站点
  19. 智力测验题(面试用)
  20. ICASSP 2022 语音合成和语音识别简报

热门文章

  1. eclipse 使用jetty调试时,加依赖工程的源码调试方法
  2. secureCRt中文乱码问题
  3. mysql重连,连接丢失:The last packet successfully received from the server--转载
  4. Java + MongoDB Hello World Example--转载
  5. 主机访问虚拟机中linux上的web服务
  6. 使用vue-cli+element-ui+expsess+mysql做一个简易的登录功能
  7. IBM的大数据就是返朴归真
  8. jvm性能调优实战 - 36XX:SoftRefLRUPolicyMSPerMB配置引起的Metaspace频繁FullGC
  9. RecyclerView的那点事儿
  10. 天津春考计算机重点知识,天津春考第一学期期中试卷(计算机基础)