访问基类和派生类成员的方式(P184)
/*
有继承关系的类之间的访问
a.如果派生类声明了一个和基类某个成员同名的新成员,派生的新成员就隐藏了外层同名成员,直接使用成员名只能访问到派生类的成员。
b.如果派生类中声明了与基类成员函数同名的新函数,即使函数的参数表不同,从基类继承的同名函数的所有重载形式也都会被隐藏。
c.如果要访问被隐藏的成员,就需要使用基类名和作用域分辨符来限定。CDobj.CB::showa();
*/
#include<iostream>
using namespace std;
class CB
{
public:
int a;
CB(int x)
{
a=x;
}
void showa()
{
cout<<"Class CB --a="<<a<<endl;
}
};
class CD:public CB
{
public:
int a;
CD(int x,int y):CB(x)
{
a=y;
}
void showa()
{
cout<<"Class CD --a="<<a<<endl;
}
void print2a()
{
cout<<"a="<<a<<endl;
cout<<"CB::a="<<endl;
}
};
int main()
{
CB CBobj(12);
CBobj.showa();
CD CDobj(48,999);
CDobj.showa(); //访问派生类的showa()
CDobj.CB::showa(); //访问基类的showa()
cout<<"CDobj.a="<<CDobj.a<<endl;
cout<<"CDobj.CB::a="<<CDobj.CB::a<<endl;
return 0;
}

浙公网安备 33010602011771号