在这种情况下,使用的是父类中的变量还是子类中的变量?
父类定义了一个函数和一个静态成员变量:
class A
{
public:
static int xx;
int fun(int xx)
{
...
}
}
子类定了一个同名静态成员变量:
class B:public A
{
public:
static int xx;
}
那么现在定义一个子类对象,并在子类中调用父类中定义的函数fun():
B b;
b.fun(xx);
使用的是父类中的xx?还是子类中的xx?
(我是新手,这个问题对我很重要。如果使用的是子类中的xx,那就好了,这样我可以在父类中定义一个函数,虽然函数在定义的时候使用的是父类中的变量,但是真正调用它的时候,却用以子类对象名调用它的,它使用的是子类中重新定义的变量。这样就可以完成我所需要的灵活的功能)
[解决办法]
父类的.
如果你想要输出子类的,那么要使用函数函数.例:
class A
{
public:
static int xx;
virtual int getX()
{
return xx;
};
int fun()
{
cout<<getX();
...
}
}
子类定了一个同名静态成员变量:
class B:public A
{
public:
virtual int getX()
{
return xx;
};
static int xx;
}