C++继承中的重载、覆盖和隐藏
来源:互联网 发布:大脚插件mac版7.0 编辑:程序博客网 时间:2024/05/12 02:13
重载(overload),覆盖(override),隐藏(hide)。
我们先来看一些代码及其编译结果。
实例一:
#include "stdafx.h"
#include
class CB
{
public:
void f(int)
{
cout << "CB::f(int)" << endl;
}
};
class CD : public CB
{
public:
void f(int,int)
{
cout << "CD::f(int,int)" << endl;
}
void test()
{
f(1);
}
};
int main(int argc, char* argv[])
{
return 0;
}
编译了一下
error C2660: 'f' : function does not take 1 parameters
结论:在类CD这个域中,没有f(int)这样的函数,基类中的void f(int)被隐藏
如果把派生CD中成员函数void f(int,int)的声明改成和基类中一样,即f(int),基类中的void f(int)还是一样被覆盖,此时编译不会出错,在函数中test调用的是CD中的f(int)
所以,在基类中的某些函数,如果没有virtral关键字,函数名是f(参数是什么我们不管),那么如果在派生类CD中也声明了某个f成员函数,那么在类CD域中,基类中所有的那些f都被隐藏。
如果你比较心急,想知道什么是隐藏,看文章最后的简单说明,不过我建议你还是一步一步看下去。
我们刚才说的是没有virtual的情况,如果有virtual的情况呢??
实例二:
#include "stdafx.h"
#include
class CB
{
public:
virtual void f(int)
{
cout << "CB::f(int)" << endl;
}
};
class CD : public CB
{
public:
void f(int)
{
cout << "CD::f(int)" << endl;
}
};
int main(int argc, char* argv[])
{
return 0;
}
这么写当然是没问题了,在这里我不多费口舌了,这是很简单的,多态,虚函数,然后什么指向基类的指针指向派生类对象阿,通过引用调用虚函数阿什么的,属性多的很咯,什么??你不明白??随便找本C++的书,对会讲多态和虚函数机制的哦!!
在了解了虚函数的概念后,我建议大家去了解一些纯虚函数和虚函数的差别,相信大家会更明白其机制.
- C++继承中的重载、覆盖和隐藏
- C++继承中的重载,覆盖和隐藏
- C++继承中的重载、覆盖和隐藏
- 类继承中的重载,覆盖和隐藏
- [转载] 继承中的重载、覆盖和隐藏
- (转)C++继承中的重载、覆盖和隐藏
- 谈谈C++继承中的重载,覆盖和隐藏
- 谈谈C++继承中的重载,覆盖和隐藏
- 谈谈C++继承中的重载,覆盖和隐藏
- 谈谈C++继承中的重载,覆盖和隐藏
- 谈C++继承中的重载、覆盖和隐藏
- 谈谈C++继承中的重载,覆盖和隐藏
- 谈C++继承中的重载、覆盖和隐藏
- 谈C++继承中的重载、覆盖和隐藏
- 谈C++继承中的重载、覆盖和隐藏
- 谈谈C++继承中的重载,覆盖和隐藏
- 谈谈Java继承中的重载,覆盖和隐藏
- 谈谈C++继承中的重载,覆盖和隐藏
- 教你配置Linux操作系统安全管理服务
- 千橡互动集团董事长兼CEO
- google搜索代码
- 电脑硬件
- 学会用 VC++ 动态链接库编写 DLL 木马
- C++继承中的重载、覆盖和隐藏
- QQ号码被盗如何申诉成功,我教您绝招!
- 中国电脑黑客起源
- 中国电脑黑客起源
- Windows 2003系统远程桌面管理小窍门
- 重载、覆盖和隐藏之细谈
- Windows XP实用技巧45条
- 熊猫烧香源代码
- 入侵中最常用的网络命令