0

我有一个带有私有变量的类stack<int> numbers;

如何在构造函数中初始化它?

Class::Class() {}

我很熟悉如果我有一个私有变量 int i,我会怎么做:

Class::Class() {
    i = 0; 
}

或者

Class::Class():i(0) {
}

但不确定何时会涉及到这一点。

4

3 回答 3

3

如果你想默认初始化它,得到一个空堆栈,那么你不需要做任何事情。任何未在初始化列表中指定的成员都将被默认初始化。

如果你愿意,你可以明确:

Class() : numbers() {}

但这完全是可选的。如果没有其他需要显式初始化的成员或基类,那么您可以完全省略构造函数:隐式生成的构造函数会做正确的事情。

如果您需要为其提供构造函数参数,请在初始化列表中执行此操作:

Class() : numbers(args) {}
于 2013-09-17T10:29:48.927 回答
0

只需在numbers构造函数的初始化列表中调用构造Class函数:

Class::Class(std::deque<int>& mydeck):numbers(mydeck) {
}

当然,仅当您想将任何参数传递给构造函数时才需要这样做。如果您不需要,并且如果有不带参数的构造函数,它将被自动调用。

于 2013-09-17T10:28:53.940 回答
0

如果它被声明为stack<int> numbers;then 它将在构造函数被调用时创建:

class Class
{
private:
  stack<int> numbers;

public:
  Class() { /* numbers exists here, it's an empty stack */ }
  Class(const stack<int>& n) : numbers(n) { /* numbers contains the copy of n's elements */ }
};
于 2013-09-17T10:29:39.037 回答