C++ 这是什么语法?

C++ 这是什么语法?,c++,constructor,ctor-initializer,C++,Constructor,Ctor Initializer,可能重复: 我发现这种语法在C语言中很奇怪++ TagDetails::TagDetails(QWidget *parent) : QDialog(parent), ui(new Ui::TagDetails) 这是C++中的构造函数声明。冒号后面的东西代表什么,即ui(newui::TagDetails)在这里是什么意思?冒号是干什么的?它是一个字母 ui(newui::TagDetails)意味着成员变量ui是用指向新分配的对象类型ui::TagDetails的指针初始化的,您看到的是初

可能重复:

我发现这种语法在C语言中很奇怪++

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

这是C++中的构造函数声明。冒号后面的东西代表什么,即ui(newui::TagDetails)在这里是什么意思?冒号是干什么的?

它是一个字母


ui(newui::TagDetails)
意味着成员变量
ui
是用指向新分配的对象类型
ui::TagDetails

的指针初始化的,您看到的是初始化列表。类的
ui
成员正在使用值
new ui::TagDetails
初始化,其中
TagDetails
在类或命名空间
ui

中定义,这称为初始化列表。有关初始化列表优于分配的优点,请参阅


我对该网站不熟悉,但似乎已经非常透彻地解释了它的工作原理。

并且请注意,您应该使用成员初始化列表来初始化所有属性和基类。@Let_Me_Be:Yes,sir!=)只有一个问题。你在哪本参考书中找到这个?@chai:可能在这本书中: