我有一个包含私有变量stack<int> numbers;
的类。
如何在构造函数中初始化它?
Class::Class() {}
我很熟悉如果我有一个私有变量int i,我会这样做:
Class::Class() {
i = 0;
}
或
Class::Class():i(0) {
}
但我不确定它是什么时候。
答案 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 */ }
};