多继承的名字隐藏

#include <iostream> using namespace std; class Base1 { public: void show() { cout << "Base1::show()" << endl; } }; class Base2 { public: void show() { cout << "Base2::show()" << endl; } }; class Derived : public Base1, public Base2 { public: void show() { cout << "Derived::show()" << endl; } }; int main() { Derived d; d.show(); // 以下代码将导致编译错误,因为 show 被隐藏 // d.Base1::show(); // d.Base2::show(); return 0; }

Base1 和 Base2 类都有一个名为 show 的成员函数。 Derived 类继承自 Base1 和 Base2,并且也有一个 show 成员函数。 在 main 函数中,创建了 Derived 类的对象 d,调用 d.show() 时,会调用 Derived 类的 show 方法。 若想调用 Base1 或 Base2 中的 show 方法,需要显式使用 d.Base1::show(); 或 d.Base2::show(); ,但由于代码中这两行被注释,直接调用会导致编译错误,因为编译器会认为 Derived 类的 show 函数隐藏了基类中的 show 函数,不允许直接使用 d.show() 调用基类的同名函数。

全部评论

相关推荐

牛客227372317号:第一,你在开头写的熟练运用的软件在后面的项目经历中都没有体现。第二,熟练运用电焊,游标卡尺这样的描述可以删去,这样的技能专科生,甚至有点的高中生都会。第三,把教学课程放上面,在项目经历中,要让HR看到你是如何把课程和项目进行结合的,你自己的思考是什么。
点赞 评论 收藏
分享
kl_我是东山啊:《相关公司:阿里巴巴》
投递阿里巴巴等公司10个岗位
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
正在热议
更多
牛客网
牛客企业服务