继承层次中的函数重载问题

本文探讨了C++中派生类函数与基类同名函数的关系,指出这种情况下并非函数重载,而是隐藏了基类的函数。通过示例展示了编译器警告,并解释了原因。提出了解决方案,包括显式指定基类域调用和使用using声明引入基类的所有重载函数,以实现真正的函数重载并避免隐藏。
摘要由CSDN通过智能技术生成

今天在用BCB编译一个工程的时候,出现了一个编译warnnig信息引起了我的注意,代码类似如下:

class B
{
public:
    virtual void f(void)
    {
        cout<<"B::f()"<<endl;
    }
};
class D:public B
{
public:
    void f(int i)
    {
        cout<<"D::f()"<<endl;
    }
};

该段代码在BCB编译的warnning信息如下:
[C++ Warning] Unit1.cpp(27): W8022 'D::f(int)' hides virtual function 'B::f()'
这个编译警告信息说派生类D中的成员函数f(int)隐藏了基类的成员函数f(),是这样吗?我们试一试:

class D:public B
{
public:
    virtual void f(int i)
    {
        cout<<"D::f()"<<endl;
    }
    void test()
    {
       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值