没有静态的类声明

时间:2011-03-20 22:13:55

标签: c++ variables

我有class Queue; 我在这个类中定义了这些变量...... int head, tail;

其中一个函数检查if (head==tail),但我不能在该函数中声明headtail等于0,否则每次调用该函数时它都会自行重置。 ..

如果没有静态变量,如何声明headtail等于0 ...我是否需要创建默认构造函数?

2 个答案:

答案 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()方法,具体取决于你正在做什么)