当类中含有const或reference 成员变量
原因:
1,构造函数的 {} 内的操作只能是赋值.
调用构造函数的时候,首先是给该实例(类的具体对象)分配空间.
使用初始化列表的话,就在分配空间的时候,同时将其空间初始化.
执行到构造函数的大括号里的时候,所有成员的空间都已经分配好了,无论是否已经被初始化过,对其调用的“=”只能是赋值,
2,初始化与赋值是不同的:
(1)对象的初始化行为发生在它初次获得一个值的时候;赋值发生于"已初始化对象被赋值新值"的时候.
(2)前者由constructor执行;后者由operator=执行.
(3)另一方面assignment动作的目标可能已经拥有配置得来的资源,在新资源被赋值过去之前,旧资源必须先行释放.
3,常量变量和引用只能被初始化,所以必须在初始化列表中完成.
只能用intialization list 而不能用assignment
最新推荐文章于 2024-02-08 18:20:29 发布