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

原创 2015年07月10日 10:23:23

函数的覆盖

   覆盖发生的条件:

(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();  //隐藏
}


相关文章推荐

qt QAxObject word文档添加页码(页眉和页脚)

qt QAxObject 操作word
  • Willa07
  • Willa07
  • 2017年07月06日 08:41
  • 117

Qt发布(二)------动态发布确定依赖关系

qt程序在发布时,往往需要确定dll依赖关系,这里有两个工具推荐使用: qt-installer-framework     官方推出的工具吧。自己一般不用。自己喜欢用下面这个depends。具体用...

c++ 父类成员函数的参数中有子类类型的对象 (前置声明解决)

父类Matrix  子类Image ;显然在子类的头文件Image.h中要包含进父类的的头文件Matrix.h,但在 父类成员函数的参数中有子类类型的对象 时,参数中的Image类型对象提示为未知的类...

C++和Java在 子类继承父类时,两者成员函数重写和重载的特性

一. Java的子类父类间,同名函数重写、重载 A.java package testpkg; public class A { public void func(int a){ Sy...
  • anialy
  • anialy
  • 2012年05月31日 22:21
  • 3746

C++父类与子类关系以及函数重载、覆盖和隐藏规则

转自:http://blog.csdn.net/xingyu19871124/article/details/7640131 在C++语言中,虚函数是非常重要的概念,虚函数是实现C++面向对象中多态...
  • h_wlyfw
  • h_wlyfw
  • 2014年01月15日 17:40
  • 601

继承—子父类中成员函数的特点-覆盖

继承—子父类中成员函数的特点-覆盖 一、成员函数 1. 子类如何查找成员函数 ·当子类和父类中出现的成员函数相同(返回值类型,函数名相同,参数列表相同)时,会运行子类的函数;这种现象,成为覆盖操...

类成员函数的重载、覆盖和隐藏

  • 2012年04月12日 15:40
  • 35KB
  • 下载

c++ 父类指针转换为子类指针后调用子类的成员函数问题

#include using namespacestd ; class A{ public: void display(){cout
  • mark555
  • mark555
  • 2014年04月12日 10:39
  • 1023

C++ 类成员函数的重载(overload),重写/覆盖(override),隐藏

C++ 类层次中的同名函数,有三种关系: 重载(overload) 重写、覆盖(override) 隐藏(hide,oversee) 重载c++函数重载 相同的范围(在同一个类中) 相同的函数名字,不...

C++类成员函数的重载、覆盖与隐藏

C++类成员函数的重载、覆盖与隐藏
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于C++子类父类成员函数的覆盖和隐藏
举报原因:
原因补充:

(最多只允许输入30个字)