隐藏,覆盖,重载的区别

隐藏,覆盖,重载的区别

1:先说重载,1首先两个函数的作用域必须相同,(这点很重要,基类和派生类不在一个作用域,所以基类和派生类的函数不可能重载),2函数名相同,3参数列表(参数类型,参数的个数,参数了顺序)不相同,4与返回值无关,叫重载;

2:隐藏:在基类和派生类之间发生的关系,函数名相同,派生类的函数把基类的函数给隐藏了,只关注函数数名,不管返回值和参数。
例:

#include<iostream>
using namespace std;
class A
{
private :
	int ma;
public:
	void  show(){cout<<"ma="<<ma<<endl;}
};

class B: public A
{
private :
	int mb;
public:
	int show(){cout<<"mb="<<mb<<endl;return 0;}

};

int main()
{
	A s1;
	B s2;
	s1.show();
	s2.show();
	return 0;
}

3:覆盖:覆盖是隐藏的一种特殊情况,派生类和基类的函数,
1 函数名相同;
2 返回值相同;
3 参数列表相同(不包括this指针在内);
4 基类函数为虚函数;
即为覆盖。
例:

#include<iostream>
using namespace std;
class A
{
private :
	int ma;
public:
	void  virtual show(){cout<<"ma="<<ma<<endl;}
};

class B: public A
{
private :
	int mb;
public:
	void show(){cout<<"mb="<<mb<<endl;}

};
int main()
{
	A s1;
	B s2;
	s1.show();
	s2.show();
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值