c++重载、重写、遮蔽

c++重载、重写、遮蔽

一、重载

函数重载是指两个函数的函数名相同,但是函数的参数个数或参数类型不同。函数重载可发生在顶层函数或同一个类中,不需要构成继承关系。是在编译期绑定,并不属于多态。

class base
{
public:
	base();
	base(int a);
	base(int a,int b);
	base(base&);
	int fun(int a);
	int fun(double a);
	int fun(int a,int b);
private:
	int x;
	int y;
}

int g(int a);
int g(double a);
int g(int a,int b);

函数重载的规则:

  • 函数名称必须相同。
  • 参数列表必须不同(个数不同、类型不同、参数排列顺序不同等)。
  • 函数的返回类型可以相同也可以不相同。
  • 仅仅返回类型不同不足以成为函数的重载。

二、重写

重写又称覆盖,是构成多态的条件。

函数重写的规则:

  • 要有继承关系
  • 构成继承关系的两个类中必须有相同函数名的成员函数
  • 这两个成员函数必须是虚函数

这时我们通过基类的指针或引用来调用虚成员函数就会形成多态。

#include<iostream>
using namespace std;

class base
{
public;
   virtual void vir1(){}
   virtual void vir2(){}
};

class derived : public base
{
public:
   void vir1(){}
   voide vir2(){}

};

int main()
{
   base *p;
   p = new derived ;
   p->vir1();
   p->vir2();
   delete p;
   return 0;
}

三、遮蔽

函数遮蔽要求构成继承关系,这两个类中具有相同函数名的函数,如果这两个函数不构成覆盖关系,就构成了遮蔽关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值