类的同名覆盖和函数重载

有下列代码:

#include <iostream>
using namespace std;

struct Base
{
	void foo (int){};
};

struct Derived: public Base
{
	void foo(string){};
};

void main()
{
	Derived d; 
	d.foo(1024);
}

这是《C++ primer》题15.23的一个减缩验证程序。

虽然,类继承中会发生覆盖,这个规则我知道,但是却没有注意,这个覆盖指的的是

“同名覆盖”,即只要函数名(也包括数据成员名)相同,就发生覆盖行为。这也就是说基类和子类的函数不存在重载现象。

上述代码中,虽然子类Drived继承了基类的int参数型foo函数,自己又有string参数型foo函数,这不算函数重载,这里发生的是“同名覆盖”。

记得应该有这么个结论:“函数重载只发生在一个类内部,同名覆盖只发生在基类子类之间”。这个结论足以解释这个现象。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值