在初始化者中使用成员函数列出了好的还是坏的做法?

时间:2017-10-05 18:22:32

标签: c++ constructor initialization initializer-list member-initialization

如果我有一个类会以这样的方式初始化成员值,使得它不能直接在初始化列表中执行,那么初始化该成员变量的正确方法是什么?

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

如果这不是一个好的做法,请你详细说明替代方案以及为什么上述方法有缺陷?

0 个答案:

没有答案