[英]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.