2

如果我有一个类将初始化一个成员值,这种方式不足以直接在初始化器列表中执行,那么初始化该成员变量的正确方法是什么?

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)。

如果这不是好的做法,请您详细说明替代方法以及上述方法是否存在缺陷?

4

0 回答 0