关闭

关于C++子类父类成员函数的覆盖和隐藏

标签: c++覆盖隐藏
456人阅读 评论(0) 收藏 举报
分类:

函数的覆盖

   覆盖发生的条件:

(1) 基类必须是虚函数(使用virtual 关键字来进行声明)

(2)发生覆盖的两个函数分别位于派生类和基类

(3)函数名和参数列表必须完全相同


函数的隐藏

    隐藏发生的条件:

(1)子类和父类的函数名相同,参数列表可以不一样


看完下面的例子就明白了


#include "iostream"
using namespace std;
class CBase{
	public:
			virtual void xfn(int i){
					cout << "Base::xfn(int i)" << endl; //1
			}
			void yfn(float f){
					cout << "Base::yfn(float)" << endl; //2
			}
			void zfn(){
					cout << "Base::zfn()" << endl;  //3
			}
};
class CDerived : public CBase{
	public:
			void xfn(int i){
				cout << "Derived::xfn(int i)" << endl;  //4
			}
			void yfn(int c){
				cout << "Derived:yfn(int c)" << endl;  //5
			}
			void zfn(){
				cout << "Derived:zfn()" << endl;  //6
			}
};
void main(){
		CDerived d;
		CBase *pb = &d;
		CDerived *pd = &d;
		pb->xfn(5);  //覆盖
		pd->xfn(5);  //直接调用

		pb->yfn(3.14f); //直接调用
		pd->yfn(3.14f);  //隐藏

		pb->zfn();  //直接调用
		pd->zfn();  //隐藏
}


0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:338689次
    • 积分:6584
    • 等级:
    • 排名:第3582名
    • 原创:331篇
    • 转载:14篇
    • 译文:0篇
    • 评论:116条
    最新评论