同名隐藏与同名覆盖

同名隐藏:

class A

{
public:
void f();
};


class B:public A
{
public:
void f();
};


int main()
{
A a;
B b;

b.f();//B::f,同名隐藏(默认自己的f),从基类继承的同名函数被隐藏

        b.A::f();//A::f

return 0;

}


同名覆盖:

前提:向上转型

 ps:函数前面加virtual

    1)成员函数
    2)非静态函数
    3)非构造函数


描述:子类函数体覆盖基类函数体

class A

{
public:

virtual void f();

};


class B:public A
{
public:
void f();//也为virtual

};

int main()
{
B b;
A &ra=b;
b.f();//B::f
return 0;
}




猜你喜欢

转载自blog.csdn.net/qq_40333952/article/details/80413372
今日推荐