Что это за синтаксис?
Возможный дубликат:
Что делает двоеточие после имени конструктора 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 для плюсов списков инициализации над присваиванием.
Я не знаком с сайтом, но эта страница, кажется, довольно подробно объясняет, как все работает.