我有class Queue;
我在这个类中定义了这些变量......
int head, tail;
其中一个函数检查if (head==tail)
,但我不能在该函数中声明head
和tail
等于0,否则每次调用该函数时它都会自行重置。 ..
如果没有静态变量,如何声明head
和tail
等于0 ...我是否需要创建默认构造函数?
答案 0 :(得分:4)
你可以在构造函数中做到这一点;更具体地说,在构造函数的 initialization-list 中!
class Queue
{
int head, tail;
public:
Queue() : head(0), tail(0) {}
// ^^^^^^^^^^^^^^^^ this is called initialization-list!
};
在初始化列表中,您可以初始化所有变量!
如果这看起来很可怕,你也可以这样做:
class Queue
{
int head, tail;
public:
Queue()
{
head = 0;
tail = 0;
}
};
但第一种方法是首选,因为这是初始化,第二种方法是分配!
阅读此常见问题解答:Should my constructors use "initialization lists" or "assignment"?
答案 1 :(得分:1)
是的,在C ++中,任何非静态变量都必须在方法中初始化,一个很好的选择是构造函数(或者可能是init()
方法,具体取决于你正在做什么)