c++ 中函数的重载 覆盖 隐藏(笔记)
来源:互联网 发布:武汉矩阵 编辑:程序博客网 时间:2024/06/05 05:25
(1)成员函数被重载的条件有
1 相同的范围(在同一个类中);
2 函数名相同
3 参数不同
4 virtual关键字可有可无
5 重载不关心函数的返回值类型
(2)覆盖的条件有
子类函数名 参数列 返回值类型必须同父类中的相对应被覆盖的函数严格一致
1 不同范围(分别位于派生类与基类)
2 函数名字相同
3 参数相同
4 返回值类型相同
5 基类函数必须有virtual关键字
补充:派生类中的函数将会覆盖基类函数中的同名函数,而并非通常情况下的重载函数。
Derived class will override instead of overload functions declared in base class
for example:
class Base {
public:
void function(){}
};
class Derived : public Base {
public:
void function(int a){} //此时参数不同也是覆盖 而非重载
};
int main(){
Derived a;
a.function();
return 0;
}
............................
派生类中从基类继承下来的函数 "function()" 被新定义的"function(int)"覆盖了,而并非通常情况下我们所希望的“函数重载”。因此上述代码无法通过编译,因为派生类中已经没有"function()"这个函数了。这种情况下,即使基类中的函数被定义为虚函数(virtual)也于事无补。
感谢:a601418249。的纠正。
(3)隐藏,非严格一致的覆盖
只派生类的函数屏蔽了与其同名的基类函数,条件如下
1 不同的范围(分别位于派生类与基类)
2 函数名字相同
//一下三条有一条不符合,皆为隐藏
3 参数相同
4 返回值类型相同
5 基类函数有virtual关键字
//阻止了编译器继续向上查找函数的定义
1 相同的范围(在同一个类中);
2 函数名相同
3 参数不同
4 virtual关键字可有可无
5 重载不关心函数的返回值类型
(2)覆盖的条件有
子类函数名 参数列 返回值类型必须同父类中的相对应被覆盖的函数严格一致
1 不同范围(分别位于派生类与基类)
2 函数名字相同
3 参数相同
4 返回值类型相同
5 基类函数必须有virtual关键字
补充:派生类中的函数将会覆盖基类函数中的同名函数,而并非通常情况下的重载函数。
Derived class will override instead of overload functions declared in base class
for example:
class Base {
public:
void function(){}
};
class Derived : public Base {
public:
void function(int a){} //此时参数不同也是覆盖 而非重载
};
int main(){
Derived a;
a.function();
return 0;
}
............................
派生类中从基类继承下来的函数 "function()" 被新定义的"function(int)"覆盖了,而并非通常情况下我们所希望的“函数重载”。因此上述代码无法通过编译,因为派生类中已经没有"function()"这个函数了。这种情况下,即使基类中的函数被定义为虚函数(virtual)也于事无补。
感谢:a601418249。的纠正。
(3)隐藏,非严格一致的覆盖
只派生类的函数屏蔽了与其同名的基类函数,条件如下
1 不同的范围(分别位于派生类与基类)
2 函数名字相同
//一下三条有一条不符合,皆为隐藏
3 参数相同
4 返回值类型相同
5 基类函数有virtual关键字
//阻止了编译器继续向上查找函数的定义
- c++ 中函数的重载 覆盖 隐藏(笔记)
- 【C++】成员函数的重载,覆盖,隐藏
- c++(成员函数的)重载、覆盖与隐藏
- 函数的重载,隐藏,覆盖
- 函数的重载、覆盖、隐藏
- 函数的覆盖、重载、隐藏
- C++学习笔记-----继承体系中函数的重载,覆盖和隐藏的区别
- C++:成员函数的重载、覆盖与隐藏 、多态
- C++:成员函数的重载、覆盖与隐藏
- 学习笔记44-成员函数的重载,覆盖,隐藏
- C++学习笔记(一):函数重载、覆盖和隐藏
- C++笔记:函数重载、覆盖、隐藏
- C++中函数的重载、覆盖与隐藏
- C++中成员函数的重载、覆盖与隐藏
- C++中成员函数的重载、覆盖与隐藏
- 如何区分C++中函数的重载、覆盖和隐藏
- C++中成员函数的重载、覆盖与隐藏
- C++中函数重载、覆盖与隐藏的区别
- apache tomcat 集群
- 如何练习以及如何讨论问题
- android布局属性详解
- RAS详解
- 年终总结
- c++ 中函数的重载 覆盖 隐藏(笔记)
- 自己写不出代码我该怎么办
- AVI文件数据流操作
- 如何做总结来构建知识体系
- android 开发中的b oot.img 和system.img浅析
- Windows 8寄托着微软对移动计算、客厅控制和超级操作系统的全新理解与尝试
- Android应用开发之特性
- 数据绑定(八)使用Binding的RelativeSource
- 关于fork创建子进程的疑问