[英]Pointer assignments in a copy constructor
我使用的是Avinash C. KAK撰寫的《 使用對象編程 》一書,在第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
指向的新分配的內存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.