C++复习之路十四——函数重载和重写

在C++中我们引入了函数的重载和重写,但是好多时候我们往往会将这两个概念搞混。

今天就来讲讲这两个概念的区别。

函数重载

同一个作用域中名字相同,但是参数列表不同的函数称为重载函数。

【注意】:这里的参数列表不同,是指的参数的类型,个数不同。

我们不能通过函数的返回类型来判断它们是不是重载函数

下面我们来看一个函数重载的例子:

int func(int a, int b)
{
	int c = a + b;
	return c;
}

float func(float a, float b)
{
	float c = a + b;
	return c;
}

上面的两个例子就是函数重载,它们的参数列表的数据类型不一样。

函数重写

函数重写主要用于不同的作用域之间(基类和派生类之间)。

函数重写的要是:函数的原型相同参数列表,名字,返回类型都相同,但是函数体里的具体操作可以不同。

函数的重写主要用来体现C++的一大特性——多态。所以基类的函数必须有virtual关键字修饰,而且不能用static关键字修饰

下面来看一下函数重写的例子:

Class A
{
public:
	virtual void print()
	{
		cout << m_a << endl;
	}
	
private:
	int m_a;
};


Class B : public A
{
public:
	virtual void print()
	{
		cout << m_b << endl;
	}
private:
	int m_b;
};

在类B中,将print()函数重写了,它和基类中的print()函数的原型必须一样!

总结一下:

函数重载的作用域必须相同,参数列表必须不同

函数重写的作用域是不同的,函数原型必须相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值