【发布时间】:2009-03-01 11:05:36
【问题描述】:
是否可以在基类中定义一个静态成员变量,并有多个派生类,每个派生类都使用该成员变量的自己的实例?
以下代码编译成功,并打印出正确的输出,但我仍然不确定这样做是否是一个好习惯。 在下面的例子中,如果我只明确定义了一个 s 的实例(通过调用:string A::s;)但我实际上使用了 2 个实例,它如何工作?
class A
{
protected:
void SetS(string new_s){s = new_s;}
void PrintS(){cout << s << endl;};
private:
static string s;
};
class B : public A
{
public:
void foo(){ SetS("bbb"); PrintS();};
};
class C : public A
{
public:
void foo(){ SetS("ccc"); PrintS();};
};
string A::s;
int main()
{
B b;
b.foo(); // results in output: bbb
C c;
c.foo(); // results in output: ccc
b.foo(); // results in output: bbb
}
【问题讨论】:
标签: c++ inheritance static