C++继承类静态成员处理
class A
{
public:
static string name;//父类静态函数
public:
static void add()
{
cout<<"打印小明"<<endl;
}
}
string A::name="小明";//外部赋值A类对象
class B:public A//继承父类A
{
public:
static string name;//父类同名静态属性
public:
static void add()//父类同名静态函数
{
cout<<"打印小红"<<endl;
}
}
string B::name="小红";//外部赋值B类对象
int main()
{
B b;
cout<<b.name<<endl;//通过对象访问B类静态成员,结果为小红
cout<<b.A::name<<endl;//通过对象访问A类静态成员,结果为小明
cout<<B::name<<endl;//通过子类名来访问子类类静态成员,结果为小红
cout<<B::A::name<<endl;//通过子类名来访问父类作用域的静态成员,结果为小明
b.add();//通过对象调用静态函数,结果为打印小红
b.A:add();//通过对象调用父类静态函数,结果为打印小明
B:add();//通过子类名调用子类静态函数,结果为打印小红
B:A:add();//通过子类名调用父类作用域的静态函数,结果为打印小明
注意事项:继承函数时,出现同名,子类会隐藏父类同名函数
}
发布评论