C ++构造函数和计算字段

时间:2011-04-24 02:57:48

标签: c++ constructor factory

在C ++中,构造函数必须使用初始化列表初始化const个变量。

如果构造函数需要计算这些字段的值,该怎么办?通过数据库查找或简单计算说。

工厂模式可以在这里应用,但看起来有点沉重。我正在考虑像X::GetX(param1, param2)这样的静态方法来计算值并调用私有构造函数。

这里可以使用更好或更流行的模式吗?

3 个答案:

答案 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
};

为什么需要私有构造函数!