C++函数的重载,覆盖和隐藏(——高质量编程第14章)
函数重载概念
只有C++才有重载的概念,C语言没有。
靠行参列表的不同来区别不同的重载函数,
若是全局函数和成员函数同名时,不算重载,因为它们的作用域不同,所以成员函数会将全局函数给隐藏(遮蔽)了。
成员函数的重载,覆盖和隐藏
重载发生在相同的作用域中,而覆盖则发生在不同的作用域中
重载:
相同的作用域
函数的名字相同
函数的形参列表,顺序,类型,个数不同
virtual可有可无
覆盖:
作用域不同,属于不同的类中
函数的名字相同
形参列表相同
基类必须是虚函数
隐藏是指派生类的成员函数遮蔽了与其同名的基类成员函数
》》派生类的成员函数与基类的同名,但形参列表不同,这时不论基类是否是virtual基类函数都将被隐藏
》》派生类的成员函数与基类的同名,行参列表相同,而基类成员函数不是virtual,会被隐藏
》》指针的静态类型即指针定义时的类型,与后面的赋值的类型无关。
2. 运算符的重载
(1)不能重载的运算符(考点)
"." ".*" "?:" "sizeof()" "typeid()" "static_cast<>" "dynamic_cast<>" "const_cast<>"
"#" "##"
(2)如果重载为成员函数,则this对象发起对它的调用
(3)如果重载为全局函数,则第一个参数发起对它的调用。
const成员函数:
(1)const成员函,const关键字放在函数的末尾。
(2)函数的内部不会修改任何数据成员。
(3)不能在函数内部修改数据成员和调用其他的非const函数。
(4)const成员函数和返回const类型没有必然的联系。
(5)static成员函数一定不能定义为const的,static成员函数只是全局函数的一个形式上的封装,全局函数
没有const一说。
注意:
const对象只能调用const成员函数,而非const对象既可以调用const成员函数,又可以调用非const成员函数。
C++函数的重载,覆盖和隐藏(——高质量编程第14章)的更多相关文章
- c++高质量编程手册
怡化主管强烈要求我读这本书.... 笔记尚未完成,持续更新呗.. 第1章 高质量软件开发之道 1.1 软件质量基本概念 1.1.1 如何理解软件的质量:功能性和非公能性 1.1.2 提高软件质量的基本 ...
- C++/C高质量编程指南-笔记
复习: C/C++高质量编程指南: [规则1-2-1]为了防止头文件被重复引用,应当用ifndef/define/endif结构产生预处理块. [规则1-2-2]用 #include <file ...
- 成员函数的重载&&隐藏&&覆盖
/* *成员函数的重载,覆盖,隐藏 *重载: *1.同样的范围(在同一个类中) *2.函数名同样 *3.參数不同 *4.virtualkeyword可有可无 *覆盖是指派生类覆盖基类的函数,特征是: ...
- C++高质量编程笔记
/* * 函数介绍: * 输入参数: * 输出参数: * 返回值 : */ void Function(float x, float y, float z) { - } if (-) { - whil ...
- C++之重载覆盖和隐藏
继承体系下同名成员函数的三种关系 重载 在同一作用域内 函数名相同,参数列表不同(分三种情况:参数个数不同,参数类型不同,参数个数和类型都不同) 返回值类型可以相同也可以不同 重写(覆盖) 在不同作用 ...
- C++ 高质量编程附录试题
附录B :C++/C试题 本试题仅用于考查C++/C程序员的基本编程技能.内容限于C++/C常用语法,不涉及数据结构.算法以及深奥的语法.考试成绩能反映出考生的编程质量以及对C++/C的理解程度,但不 ...
- C++,C程序设计入门——《高质量程序设计第4章》
1. 连接规范 1. extern “C” 2. 一部分采用C的连接规范 #ifdef __cplusplus extern "C" { #endif #ifdef __cplus ...
- 指针参数的传递(节选 C++/C 高质量编程 林锐)
指针参数是如何传递内存的 如果函数的参数是一个指针,不要指望用该指针去申请动态内存.示例7-4-1中,Test函数的语句GetMemory(str, 200)并没有使str获得期望的内存,str依旧是 ...
- 编写高质量代码:Web前端开发修炼之道(三)
第五章:高质量的Javascript 这章的内容我看的最久,这是跟我js基础没打好有着莫大的关系,但是还是耐着性子看完了, 不懂的东西都是百度上搜索,理解后再继续.下面是记录下来的笔记. 1)如何避免 ...
随机推荐
- Bean with name 'xxxService' has been injected into other beans [xxxServiceA,xxxServiceB] in its raw version as part of a circular reference, but has eventually been wrapped
启动项目,通过@Autowired注入对象,出现循环依赖,导致项目启动失败,具体报错信息如下: Exception encountered during context initialization ...
- 【算法】最长回文子串 longest palindrome substring
对于字符串S, 要找到它最长的回文子串,能想到的最暴力方法,应该是对于每个元素i-th都向左向右对称搜索,最后用一个数组span 记录下相对应元素i-th为中心的回文子串长度. 那么问题来了: 1. ...
- 深入Docker 存储驱动 (转)
参考: http://static.dockerone.com/ppt/filedriver.html#28
- Socket是什么呢?中间软件抽象层
代表着网络连接 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用 ...
- git 本地与远程仓库出现代码冲突解决方法
提交过程中报错: [python@heaven-00 Selesystem]$ git push -u origin masterUsername for 'https://github.com': ...
- jquery.placeholder.min.js让吃屎的IE浏览器支持placeholder去吧
描述:现在都是HTML5时代了,所有的浏览器都支持placeholder,唯独IE不支持.现在我们有了这款插件,IE下终于可以支持了! 图片展示: 兼容浏览器:IE6+/Firefox/Goog ...
- 7-Java-C(搭积木)
题目描述: 小明最近喜欢搭数字积木, 一共有10块积木,每个积木上有一个数字,0~9. 搭积木规则: 每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小. 最后搭成4层的金字塔形,必须用完 ...
- uva1610 Party Games
细节值得注意 注意vector<string>是可以直接sort的! #include <iostream> #include <string> #include ...
- ignore-on-commit svn 更改文件后 默认不提交文件到服务器(服务器上已存在的文件)
不用那个忽略文件那个,那个功能是删除服务器的文件,然后本地还存在,不符合我的要求 我的要求是 服务器文件在,我不动,然后我改完了,和别人的不冲突,我也不覆盖别人的文件 主要就是默认不提交,这个很重要 ...
- render_to_response()
render_to_response('模板名称',字典) 字典:第二个参数必须是为该模板创建context时所使用的字典,如果不提供第二个参数,render_response()使用一个空字典