C++_Primer 15.5 继承情况下的类作用域

来源:互联网 发布:淘宝直通车开车后流程 编辑:程序博客网 时间:2024/05/21 07:54

15.5.3 作用域与成员函数

基类和派生类中使用同一名字的成员函数,其行为与数据成员一样:在派生类作用域中派生类成员将屏蔽基类成员。即使函数原型不同,基类成员也会被屏蔽。

struct Base {void memfcn() {cout << "Base : memfcn" << endl;}};struct Derived : Base {void memfcn(int i) {cout << "Derived : memfcn" << endl;}};
Derived d;d.memfcn(); // error! d.memfcn(1); // okd.Base::memfcn(); //ok

如果派生类想通过自身类型使用所有的重载版本,则派生类必须要么重定义所有重载版本,要么一个也不重定义。

派生类不用重定义所继承的每一个基类版本,它可以为重载成员提供using声明,一个using声明只能指定一个名字,不能指定形参表。

struct Derived : Base {using Base::memfcn;void memfcn(int i) {cout << "Derived : memfcn" << endl;}};
Derived d;d.memfcn(); //okd.memfcn(10); //ok







0 0