gpt4 book ai didi

c++ - 在结构 : Do arrays get copied 中复制构造函数

转载 作者:行者123 更新时间:2023-11-28 02:35:46 25 4
gpt4 key购买 nike

我对 C++ 中的复制构造函数行为有疑问。我有一个结构如下:

struct Vec4
{
public:
float elems[4];

};

现在如果我做类似的事情:

Vec4 copied = some_func(); // returns a Vec4 object

这会执行 elms 数组的深拷贝还是只拷贝指针地址?我认为应该是后者,应该提供显式复制构造函数和赋值运算符,但我不确定。

我做了一个小测试,它做了它应该做的,但我不确定这是否只是一个意外!

最佳答案

是的,elemsVec4 对象的子对象,因此它与 Vec4 一起被复制。没有要复制的指针。数组元素直接嵌入到 Vec4 对象中。

我发现术语深拷贝和浅拷贝在 C 和 C++ 中有点误导。我认为更好的思考方式是默认拷贝不会遵循任何间接级别(例如指针)。你可以有一个非常“深”的对象(很多子对象的子对象等等),其中不涉及间接寻址并且仍然会复制整个对象,但我们仍然称其为“浅拷贝”。如果您需要遵循任何间接寻址,则需要实现执行“深层复制”的自定义复制构造函数。

关于c++ - 在结构 : Do arrays get copied 中复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27526169/

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