簡體   English   中英

復制構造函數中的指針分配

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM