我想创建基类Foo
的ab对象,将变量value
初始化为我决定的东西,然后我想创建派生类Bar
的对象和变量值我之前决定用Foo
继承Bar
继承,就像变量值的一次性初始化一样。
有没有一种方法可以在每次创建Bar
对象时都传递值,就像使用Foo
对象一样,或者将类值默认设置为5?
示例:
// Base class
class Foo {
private:
int value;
public:
Foo() {}
Foo(int value) : value(value) {}
int getValue() { return value; }
};
// Derived class
class Bar : public Foo {
private:
public:
Bar() {}
};
Foo foo(5);
foo.getValue() // 5
Bar bar;
bar.getValue() // this I also want to be 5 now
答案 0 :(得分:2)
你可以使用静态变量,在类范围或方法范围内(后者有一些差异,如延迟初始化,线程安全初始化等等)虽然,它在你的用例中没有太大的区别,但最好记住后者作为一种选择)。例如
#include <iostream>
using std::cout;
using std::endl;
// Base class
class Foo {
private:
static int value;
public:
Foo() {}
Foo(int value) {
Foo::value = value;
}
int getValue() { return value; }
};
int Foo::value = 0;
// Derived class
class Bar : public Foo {
private:
public:
Bar() {}
};
int main() {
Foo foo(5);
cout << foo.getValue() << endl;
Bar bar;
cout << bar.getValue() << endl;
}
我刚刚为您提供了您想要的解决方案。请记住,这可能不是实现您想要的最佳方式。理想情况下,对象的构造参数应仅影响当前对象。