您的位置:首页 > 其它

只能用intialization list 而不能用assignment

2010-09-23 16:12 441 查看
当类中含有const或reference 成员变量

原因:

1,构造函数的 {} 内的操作只能是赋值.

调用构造函数的时候,首先是给该实例(类的具体对象)分配空间.

使用初始化列表的话,就在分配空间的时候,同时将其空间初始化.

执行到构造函数的大括号里的时候,所有成员的空间都已经分配好了,无论是否已经被初始化过,对其调用的“=”只能是赋值,

2,初始化与赋值是不同的:

(1)对象的初始化行为发生在它初次获得一个值的时候;赋值发生于"已初始化对象被赋值新值"的时候.

(2)前者由constructor执行;后者由operator=执行.

(3)另一方面assignment动作的目标可能已经拥有配置得来的资源,在新资源被赋值过去之前,旧资源必须先行释放.

3,常量变量和引用只能被初始化,所以必须在初始化列表中完成.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐