读书人

在这种情况下使用的是父类中的变量还

发布时间: 2012-05-24 11:55:41 作者: rapoo

在这种情况下,使用的是父类中的变量还是子类中的变量?
父类定义了一个函数和一个静态成员变量:
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;
}

读书人网 >C++

热点推荐