繁体   English   中英

以下内存分配有用吗?

[英]Is the following allocation of memory useful?

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

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
}

其中Line定义为:

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,本质上它们都指向内存中的相同位置吗? 如果只执行浅表复制(即复制目标变量的指针地址),为什么还要在这里使用新的?

这是制作深层副本的方法。 指针不会指向相同的位置,因为您已动态分配了ptr(因此它具有它自己的新位置)。 之后,通过取消引用指针,仅复制指针的值。

每个Line实例都有自己动态分配的int 复制构造函数正在分配一个新的int ,然后复制所指向的int的value ,而不是复制指针本身。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM