2010-11-09 9 views
1

Можно создать дубликат:
What does a colon following a C++ constructor name do?Что это за синтаксис?

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

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

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

ответ

5

Это member initialization list.

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

+0

Обратите внимание, что вы должны использовать список инициализации члена для инициализации всех атрибутов и базовых классов. –

+0

@Let_Me_Be: Да, сэр! =) – vitaut

+0

Только один вопрос. В каком справочнике вы нашли это? – chai

1

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

0

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

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

Смежные вопросы