如果我有一个类将初始化一个成员值,这种方式不足以直接在初始化器列表中执行,那么初始化该成员变量的正确方法是什么?
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)。
如果这不是好的做法,请您详细说明替代方法以及上述方法是否存在缺陷?