为什么复制构造不需要不变对象?请为我解释这一点。

有帮助吗?

解决方案

由于该值不能改变,它的每一样好引用同一个对象在所有情况下位,有没有必要有一个“额外的副本”,可以这么说。

其他提示

这是尤其相对于寿命的依赖于语言的问题。对于力矩让忘记那些。

拷贝构造函数,它们允许你拿一个对象,并创建它的一个完全独立的副本有价值。这是有价值的,你现在可以修改第二个对象独立之首。或组件可以创建一个私有副本,以保护自己免受其他组件从它下面改变对象的。

不可变对象是不可改变的。有创建一个对象,它不会改变的副本没有价值。

现在再让约一辈子的事情。在像C ++拷贝构造函数语言还允许您解决内存/寿命的问题。例如,如果我正在写,这需要SomeType*的API,我想保持它周围的时间比我的方法的寿命。在C ++中最可靠的方法做,这是通过拷贝构造函数来创建对象的副本。

这是有点依赖于语言的:

然而,许多语言需要一个拷贝构造函数。如果你不提供一个语言将隐式生成一个。

使用一个不变的对象,但是,这通常是很好的,因为默认复制构造(典型地)执行所有值的浅表副本。用一个可变的数据类型(即:含有内的对象引用的其他对象),浅复制通常是不好的选择,因为拷贝被复制仅在其内封装在参考/指针

它是如此自然的,因为不可变的对象的值不能被改变。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top