hp://www.mianwww.com/html/2012/04/16171.html (题目来源)
c++ 重载 (overload) ,覆盖 (override), 隐藏 (hide) 的区别和执行方式
成员函数被重载的特征
(1)相同的范围(在同一个类中);'
(2)函数名字相同;'
(3)参数不同;'
(4)virtual 关键字可有可无。'
覆盖是指派生类函数覆盖基类函数,特征是
(1)不同的范围(分别位于派生类与基类);'
(2)函数名字相同;'
(3)参数相同;'
(4)基类函数必须有 virtual 关键字。'
“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下
(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无 virtual 关键字,
基类的函数将被隐藏(注意别与重载混淆)。'
(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有 virtual 关键
字。此时,基类的函数被隐藏(注意别与覆盖混淆)'
3 种情况怎么执行:
1。重载:看参数
2。隐藏:用什么就调用什么
3。覆盖:调用派生类
$虚拟函数与重载函数的区别
1)形式上,重载函数要求有相同的返回值类型和函数名,并有不同的参数序列;而虚拟函数要求三
者完全相同。
2)重载函数可以是成员函数或非成员函数;而虚拟函数必须是成员函数。
3)调用方法上,重载函数根据所传递的参数序列的差别作为调用的依据;而虚拟函数则根据调用对
象的不同而去调用不同类的函数。
4)虚拟函数在运行时表现出多态功能;而重载函数不具有这一功能。
$ c++ 编译期与运行期 总
结 hp://hi.baidu.com/zhaoyong200518/blog/item/fe0264f4a1899de37609d7b5.html
$C++ :静态联编和动态联编
静态联编是指在编译阶段就将函数实现和函数调用关联起来,因此静态联编也叫早绑定,在编译阶段就必
须了解所有的函数或模块执行所需要检测的信息,它对函数的选择是基于指向对象的指针(或者引用)的
类型.
动态联编是指在程序执行的时候才将函数实现和函数调用关联,因此也叫运行时绑定或者晚绑定,动态联
编对函数的选择不是基于指针或者引用,而是基于对象类型,不同的对象类型将做出不同的编译结果。
动态多态是指一般的多态,是通过类继承和虚函数机制实现的多态;静态多态是通过模板来实现
1. 你对 C++三个特点的理解
a.封装:把对象的属性和服务结合成一个独立的系统单位,并尽可能隐蔽对象的实现细节。 ''