如果我有一个类会以这样的方式初始化成员值,使得它不能直接在初始化列表中执行,那么初始化该成员变量的正确方法是什么?
class Rectangle
{
private:
const int area;
int init_area(const int width, const int height) const { return (width*height); }
public:
Rectangle(const int width, const int height) : area(init_area()) {}
}
显然在这种情况下初始化Rectangle的区域非常简单,可以内联完成,但是让我们假装不是这种情况,而init_area()做的事情更复杂。
以这种方式初始化成员是标准做法吗?如果是这样的话,我似乎无法在文献中经常使用它(例如cppcoreguidelines的前100页)。
如果这不是一个好的做法,请你详细说明替代方案以及为什么上述方法有缺陷?