使用静态方法初始化const类字段是好还是坏的做法?

时间:2017-05-27 00:58:39

标签: c++ constructor const static-methods initializer-list

我有包含const字段的类,需要使用函数进行初始化。是否适合使用类的静态方法在构造函数的初始化列表中初始化这些值?

我还没有遇到过这样的问题,但是当我读到静态初始化惨败时#39;我担心我会忽略一些后来会再次咬我的东西,无论哪种方式,我都要养成正确初始化的习惯。

示例:

square.hpp:

class Square
{
    const double area;

    static initArea(double length);

    Square(double length);
}

square.cpp

Square::initArea(double length)
{
    return (length * length);
}

Square::Square(double length) :
    area(initArea(length))
{
    return;
}

显然我意识到在这种情况下你不需要一个函数来计算面积,但实际上这个函数会决定更复杂的东西。

1 个答案:

答案 0 :(得分:3)

  

使用类的静态方法在构造函数的初始化列表中初始化这些值是否合适?

是的,这是绝对合适的:静态辅助方法非常适合此任务,因为它们可以在任何对象的上下文之外运行。因此,在初始化列表中调用它们是完全有效的。

这样一个简单的函数也可能是一个好主意。