gpt4 book ai didi

c++ - 下面的内存分配有用吗?

转载 作者:行者123 更新时间:2023-11-28 00:34:41 26 4
gpt4 key购买 nike

我在下面的链接中找到了这段代码

http://www.tutorialspoint.com/cplusplus/cpp_copy_constructor.htm

Line::Line(const Line &obj)
{
cout << "Copy constructor allocating ptr." << endl;
ptr = new int;
*ptr = *obj.ptr; // copy the value
}

其中线定义为:

class Line
{
public:
int getLength( void );
Line( int len ); // simple constructor
Line( const Line &obj); // copy constructor
~Line(); // destructor

private:
int *ptr;
};

所以帮助我理解.. 在 Copy 构造函数中为 *ptr 分配内存有什么意义?通过将它分配给 *obj.ptr,本质上它们都指向内存中的相同位置?为什么要在这里使用new,如果它只是执行浅拷贝,即复制预期变量的指针地址?

最佳答案

这是制作深拷贝的方法。指针不指向同一位置,因为您动态分配了 ptr(因此它有自己的新位置)。之后,通过取消引用它们,您只复制指针的值。

关于c++ - 下面的内存分配有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21418514/

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