gpt4 book ai didi

c++ - 当我们有深拷贝和浅拷贝时,为什么要进行惰性拷贝?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:31:38 24 4
gpt4 key购买 nike

当我们想在 C++ 中复制对象时,我们有浅拷贝深拷贝 可以为我们完成这项工作。所以,
什么是延迟复制
这是由程序员或编译器自己处理的事情吗?
惰性复制有优势的编程场景有哪些?

最佳答案

What is Lazy Copy?

Wikipedia恰本地定义了这一点。

惰性拷贝是浅拷贝和深拷贝的结合。最初复制对象时,使用(快速)浅拷贝。计数器还用于跟踪有多少对象共享数据。当程序想要修改一个对象时,它可以确定数据是否共享(通过检查计数器)并且可以在必要时进行深拷贝。惰性复制在外部看起来就像深复制,但尽可能利用浅复制的速度。由于柜台的原因,缺点是相当高但不变的基本成本。此外,在某些情况下,循环引用也会导致问题。

Is this a thing that is taken care by a programmer or something that the compiler does on its own?

程序员必须为他自己的类实现这种行为。
编译器默认在复制函数(复制构造函数和赋值运算符)中执行浅拷贝。
Deep Copy 是程序员必须为其类实现的东西,以便可以对成员(指针)进行特殊处理以复制函数。

What are the programming scenarios where a lazy copy is advantageous?

理想情况下,
复制对象会导致性能下降但对象不会被频繁修改的情况,惰性复制在性能方面将是有利的。

维基百科引用了一个 number of examples其中,使用了 Lazy Copy(Copy On Write)。

关于c++ - 当我们有深拷贝和浅拷贝时,为什么要进行惰性拷贝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7698312/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com