如何在构造函数中初始化私有变量堆栈?

时间:2013-09-17 10:25:45

标签: c++

我有一个包含私有变量stack<int> numbers;的类。

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

Class::Class() {}

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

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

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

但我不确定它是什么时候。

3 个答案:

答案 0 :(得分:3)

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

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

Class() : numbers() {}

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

如果你需要给它构造函数参数,那么在初始化列表中执行:

Class() : numbers(args) {}

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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

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 */ }
};