Я видел следующий код в книге и задаюсь вопросом, что происходит:
class shiftedList{
int* array;
int offset, size;
public:
shiftedList(int sz) : offset(0), size(sz){
array = new int[size];
}
}
что происходит со смещением (0) и размером (sz) в конструкторе класса?
Спасибо за помощь.
Они просто инициализаторы как часть конструктора.
Поэтому в этом конкретном случае это эквивалентно
shiftedList(int sz) {
offset = 0;
size = sz;
array = new int[size];
}
За исключением того, что компилятор может улучшить оптимизацию, и инициализация не может привести к каким-либо кодам.
Есть случай, когда должен использоваться список инициализаторов, особенно те, где инициализируется эталонная переменная.
initializer lists
.