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)如何避免 ...
随机推荐
- 【学习笔记】后端中的MVC和前端MVVM的关系
- OCP 11g 第四章练习
练习 4-1 配置Oracle Net 在本练习中, 将使用图形化工具和命令行工具来建立一个完整的Oracle Net 环境. 由此, 读者可看出在Windows 和 Linux 系统中的区别. 1. ...
- 第17周翻译:SQL Server中的事务日志管理的阶梯:第5级:在完全恢复模式下管理日志
来源:http://www.sqlservercentral.com/articles/Stairway+Series/73785/ 作者:Tony Davis, 2012/01/27 翻译:刘琼滨. ...
- log4j 日志分级处理
log4j 配置文件: log4j.rootLogger=debug,stdout,debug,info,errorlog4j.appender.stdout=org.apache.log4j.Con ...
- 下拉列表事件 Dropdown iview
<Dropdown @on-click="export"> <Button icon='md-log-out'> 000l <Icon type=&q ...
- 三大框架所使用的UI框架
- LinkedHashMap/HashMap(数҉据҉缓҉存҉准҉备҉)
顾名思义LinkedHashMap是比HashMap多了一个链表的结构.与HashMap相比LinkedHashMap维护的是一个具有双重链表的HashMap,LinkedHashMap支持2中排序一 ...
- 抓取oracle数据库耗费资源的sql语句
oracle数据库连接业务系统,而有些sql语句的执行严重影响了oracle的性能,就如同mysql的慢查询一样,mysql可以开启慢查询日志定位这些造成数据库性能下降的语句,而oracle同样可以做 ...
- Redis那些事(一) — Redis简介
本人最近在学习Redis的使用和底层原理,有一些收获,所以希望通过写博客的形式来记录自己的学习过程,加深自己的理解,同时也方便以后查阅复习.目前打算先记录一些基本的使用方法和部分底层实现,其他的如果有 ...
- Linux查看配置文件中未被注释的有效配置行
grep 命令示例——去掉注释 $ grep -v "^#" /path/to/config/file $ grep -v "^#" /etc/apache2/ ...