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

C++ constructors and computed fields

本文关键字:字段 计算 构造函数 c++      更新时间:2023-10-16

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

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

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

是否有更好或更流行的模式可以在这里使用?

不需要调用私有构造函数,您可以直接从初始化列表调用静态方法(或者在某些情况下,甚至是非静态方法)。例如:

class testclass {
    public:
    testclass::testclass(int n): memberdata(fn(n)) { }
    private:
    int fn(int n) {
        // Various calculations on 'n'
        return 12;
    }
    int memberdata;
};

您可以在初始化器中调用静态函数,这些函数可以包含您喜欢的任何逻辑。

你可以在初始化列表中调用这个方法:

class A {
public:
  A () : t_Const(X::Get(param1, param2)) { }  // constructor can be public
  const int t_Const;  // this is your variable
};

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