在C ++中,构造函数必须使用初始化列表初始化const
个变量。
如果构造函数需要计算这些字段的值,该怎么办?通过数据库查找或简单计算说。
工厂模式可以在这里应用,但看起来有点沉重。我正在考虑像X::GetX(param1, param2)
这样的静态方法来计算值并调用私有构造函数。
这里可以使用更好或更流行的模式吗?
答案 0 :(得分:4)
不需要调用私有构造函数,可以直接从初始化列表中调用静态方法(或者在某些情况下,甚至是非静态方法)。例如:
class testclass {
public:
testclass::testclass(int n): memberdata(fn(n)) { }
private:
int fn(int n) {
// Various calculations on 'n'
return 12;
}
int memberdata;
};
答案 1 :(得分:0)
您可以在初始化程序中调用静态函数,这些函数可以包含您喜欢的任何逻辑。
答案 2 :(得分:0)
您可以在初始化程序列表中调用该方法:
class A {
public:
A () : t_Const(X::Get(param1, param2)) { } // constructor can be public
const int t_Const; // this is your variable
};
为什么需要私有构造函数!