结构体构造函数必须是与结构体名称相同的公共成员函数,并且没有返回类型。
写法和类是类似的。
struct node
{
int label;
node(int x):label(x){}
}
struct node
{
int label;
node(int x)
{
label = x;
}
}
第一个对label的初始化发生在构造函数之前,即对label赋值完成后,才会执行构造函数里的语句。
第二个是赋值操作,进入构造函数后才对label赋值。
第一个操作叫做初始化列表。
《C++ Primer》中提到在以下三种情况下需要使用初始化成员列表:
1.需要初始化的数据成员是对象的情况
如果有一个类成员,本身是一个类或者结构,并且只有一个带参数的构造函数,没有默认构造函数,如果要对其初始化就必须调用带参数的构造函数。
2.对象是引用或者cosnt修饰的数据成员
3.子类初始化父类的私有成员
详情见:https://blog.csdn.net/liuliu0322/article/details/79812156
https://www.cnblogs.com/susharelight/p/10604711.html
默认构造函数:
1.没有带明显形参的构造函数
2.提供了默认实参的构造函数