C++ 构造函数和计算域

Ada*_*nst 5 c++ constructor factory

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

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

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

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

Hea*_*eek 5

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

class testclass {
    public:
    testclass::testclass(int n): memberdata(fn(n)) { }

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

    int memberdata;
};
Run Code Online (Sandbox Code Playgroud)