我有一个带有私有变量的类stack<int> numbers;
。
如何在构造函数中初始化它?
Class::Class() {}
我很熟悉如果我有一个私有变量 int i,我会怎么做:
Class::Class() {
i = 0;
}
或者
Class::Class():i(0) {
}
但不确定何时会涉及到这一点。
我有一个带有私有变量的类stack<int> numbers;
。
如何在构造函数中初始化它?
Class::Class() {}
我很熟悉如果我有一个私有变量 int i,我会怎么做:
Class::Class() {
i = 0;
}
或者
Class::Class():i(0) {
}
但不确定何时会涉及到这一点。
如果你想默认初始化它,得到一个空堆栈,那么你不需要做任何事情。任何未在初始化列表中指定的成员都将被默认初始化。
如果你愿意,你可以明确:
Class() : numbers() {}
但这完全是可选的。如果没有其他需要显式初始化的成员或基类,那么您可以完全省略构造函数:隐式生成的构造函数会做正确的事情。
如果您需要为其提供构造函数参数,请在初始化列表中执行此操作:
Class() : numbers(args) {}
只需在numbers
构造函数的初始化列表中调用构造Class
函数:
Class::Class(std::deque<int>& mydeck):numbers(mydeck) {
}
当然,仅当您想将任何参数传递给构造函数时才需要这样做。如果您不需要,并且如果有不带参数的构造函数,它将被自动调用。
如果它被声明为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 */ }
};