初始化C ++类中的字段

时间:2014-07-25 21:22:59

标签: c++

我在一本书中看到了以下代码,我想知道发生了什么:

class shiftedList{

      int* array;
      int offset, size;

public:       

         shiftedList(int sz) : offset(0), size(sz){
               array = new int[size];
        }        

}

类的构造函数中的offset(0)和size(sz)是怎么回事?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

它们只是初始化器,是构造函数的一部分。

因此,在这种特定情况下,它等同于

shiftedList(int sz) {
   offset = 0;
   size = sz;
   array = new int[size];
}   

除了编译器可以做更好的优化,初始化实际上可能不会产生任何代码。

有时使用初始化列表 ,特别是初始化参考变量的那些。