C++ 隐藏 覆盖 重载
来源:互联网 发布:mac cockney为什么停产 编辑:程序博客网 时间:2024/06/05 05:15
1 重载
重载发生在一个类的内部(同一个类中),函数名字相同,参数不同,virtual关键字可有可无
#include "stdafx.h"#include<iostream>using namespace std;class Base{public:void show(){cout << "A::show" << endl;}void show(int a){cout << "A::show" << a << endl;}};int main(){Base *b = new Base;b->show();b->show(10);delete b;return 0;}
2 隐藏
隐藏是指派生类的函数屏蔽了与其同名的基类的成员函数
如果派生类的函数与基类函数同名,参数不同,此时 无论有误virtual关键字,基类的函数都将被隐藏(不是重载)
如果派生类的函数与基类同名,参数相同,但基类没有virtual关键字,此时基类的函数也将被隐藏 (不是覆盖)
<pre name="code" class="cpp">class Base{public: void show(){cout << "Base::show" << endl;}};class A : public Base{public:void show(int a){cout << "A::show" << endl;}};int main(){A *a = new A();a->show();//因为a中的show(int a)会隐藏父类的show()因此 会报函数参数太少错误
delete a;return 0;}
3 覆盖
覆盖是指派生类函数覆盖基类函数,特征是:
(1)不同的范围(分别位于派生类与基类);
(2)函数名字相同;
(3)参数相同;
(4)基类函数必须有virtual 关键字。
#include "stdafx.h"#include<iostream>using namespace std;class Base{public: virtual void show(){cout << "Base::show" << endl;}};class A : public Base{public:void show( ){cout << "A::show" << endl;}};int main(){Base *a = new A();a->show();
delete a;return 0;}
0 0
- c++(重载、覆盖、隐藏)
- c++(重载、覆盖、隐藏)
- c++(重载、覆盖、隐藏)
- c++(重载、覆盖、隐藏)
- c++(重载、覆盖、隐藏)
- c++(重载、覆盖、隐藏)
- c++(重载、覆盖、隐藏)
- c++(重载、覆盖、隐藏)
- c++(重载、覆盖、隐藏)
- c++(重载、覆盖、隐藏)
- c++(重载、覆盖、隐藏)
- c++(重载、覆盖、隐藏)
- c++(重载、覆盖、隐藏)
- c++(重载、覆盖、隐藏)
- c++(重载、覆盖、隐藏)
- 【C++】重载、覆盖、隐藏
- c++: 重载 覆盖 隐藏
- c++(重载、覆盖、隐藏)
- Zhejiang university----Hello World for U
- 冒泡排序
- git 三板斧
- 解压版tomcat(免安装版),通过双击startup.bat启动时闪退。
- C# 发送Post请求(带参数)
- C++ 隐藏 覆盖 重载
- SharePoint 2013 中的服务
- 自定义控件View(三)
- Thread的中断机制(interrupt)
- JavaScript学习笔记六
- AngularJS 动态设置select的默认selected
- 世界上的程序语言已经这么多了,为什么还不够?
- TCP、UDP、HTTP、SOCKET之间的区别与联系
- oracle12c创建用户