我有包含常量字段的类,这些字段需要使用函数进行初始化。使用类的静态方法在构造函数的初始化器列表中初始化这些值是否合适?
我还没有遇到这样做的问题,但是当我读到"静态初始化惨败"时,我担心我忽略了一些稍后会回来咬我的东西,无论哪种方式,我宁愿养成正确初始化的习惯。
例:
方形.hpp:
class Square
{
const double area;
static initArea(double length);
Square(double length);
}
方形.cpp
Square::initArea(double length)
{
return (length * length);
}
Square::Square(double length) :
area(initArea(length))
{
return;
}
显然,我意识到在这种情况下,您不需要函数来计算面积,但实际上该函数将确定更复杂的内容。
是否适合使用类的静态方法来初始化构造函数的初始值设定项列表中的这些值?
是的,这是绝对合适的:静态帮助程序方法非常适合此任务,因为它们可以在任何对象的上下文之外运行。因此,在初始值设定项列表中调用它们是完全有效的。
内联这样的简单函数可能也是一个好主意。