1

结构

struct Vanish
{
  int iCount;
  int iRow;
};

我将 a std::vectorof定义Vanish为我的类的成员,并希望在构造函数中初始化它,如下所示:

class BigClass
{
  public:
    BigClass();
  private:
    std::vector<Vanish> tovanish;
};

void BigClass::BigClass()
{
  Vanish empty = {0,0};
  tovanish.assign(MAX_VANISH, empty);
}

有没有更好的方法,或者这被认为可以吗?

4

2 回答 2

4

最好在构造函数的初始化列表中这样做:

BigClass::BigClass()
: tovanish(MAX_VANISH)
{

}

这样,您将避免可能的向量重新分配。请注意,向量的构造函数将对它的元素进行值初始化。int成员的值初始化Vanish只是将它们归零。

请注意,在 C++11 中,使用统一初始化可以轻松指定其他值:

BigClass::BigClass()
: tovanish(MAX_VANISH, {42, 24})
{

}
于 2013-06-08T19:44:13.353 回答
4

Is there a better way?

Yes, sure,

BigClass::BigClass() : tovanish(MAX_VANISH) {}

This gives you a vector with MAX_VANISH value-initialized Vanish elements.

于 2013-06-08T19:39:55.490 回答