C++类中包含没有默认构造函数的成员
# 当类中包含没有默认构造函数的成员时,需要在初始化列表中指定其参数。
下面的类SomeThing, 包含了一个没有默认构造函数的成员NoDefaultClass nc;
class NoDefaultClass {
public:
int mtt;
NoDefaultClass(int tt) {
mtt = tt;
}
};
class SomeThing {
public:
int maa;
SomeThing(int aa, int tt);
~SomeThing();
NoDefaultClass nc;
};
SomeThing::SomeThing(int aa, int tt): nc(tt) {
maa = aa;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 初始化列表
# 参考
https://blog.csdn.net/lws123253/article/details/80368047 (opens new window)
# 作用
初始化类的成员有两种方式,一是使用初始化列表,二是在构造函数体内进行赋值操作。
使用初始化列表少了一次调用默认构造函数的过程
# 必须使用初始化列表的时候
除了性能问题之外,有些时候合初始化列表是不可或缺的,以下几种情况时必须使用初始化列表
- 常量成员,因为常量只能初始化不能赋值,所以必须放在初始化列表里面
- 引用类型,引用必须在定义的时候初始化,并且不能重新赋值,所以也要写在初始化列表里面
- 没有默认构造函数的类类型,因为使用初始化列表可以不必调用默认构造函数来初始化,而是直接调用拷贝构造函数初始化
编辑 (opens new window)
上次更新: 2023/05/07, 17:27:54