Что это за синтаксис?

Возможный дубликат:
Что делает двоеточие после имени конструктора C++?

Я нахожу этот синтаксис странным в C++

TagDetails::TagDetails(QWidget *parent) :
QDialog(parent),
ui(new Ui::TagDetails)

Это объявление конструктора в C++... Что означает вещь после двоеточия, то есть что здесь означает ui(new Ui::TagDetails)? Для чего нужна толстая кишка?

3 ответа

Решение

Это список инициализации члена.

ui(new Ui::TagDetails) означает, что переменная-член ui инициализируется указателем на вновь выделенный объект типа Ui::TagDetails,

То, что вы смотрите, это список инициализатора. ui член класса инициализируется со значением new Ui::TagDetails, где TagDetails определяется внутри класса или пространства имен Ui,

Это называется списком инициализации. См. C++ FAQ для плюсов списков инициализации над присваиванием.

Я не знаком с сайтом, но эта страница, кажется, довольно подробно объясняет, как все работает.

Другие вопросы по тегам