gpt4 book ai didi

c++ - 复制构造函数中的指针赋值

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

我正在使用 Avinash C. KAK 的书 Programming with objects,在第 452 页,它说构造一个复制构造函数方法为

class X{
int * ptr;
int size;
public:
X(const X & xobj)
{
size = xobj.size;
ptr = new int [size];
for(int i = 0; i < size; i++)
{
ptr[i] = xobj.ptr[i];
}
}
}

然后它用作

X x1;
X x2 = x1;

但我不明白的是,它先为x2.ptr分配内存,然后将x1.ptr的内存地址分配给x2.ptr,这与具有复制构造方法和新分配的方法的目的相矛盾内存现在根本没有被使用,所以我错过了什么?

最佳答案

如果您有一个指向新分配的数组的指针,例如:

ptr = new int[size];

然后你可以像数组一样索引它:

ptr[1] = 3; // equivalent to: *(ptr + 1) = 3

因此,由于它是一个复制构造函数,它将 xobj.ptr 指向的内存内容复制到 ptr 指向的新分配内存。

关于c++ - 复制构造函数中的指针赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44995405/

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