Aracılığıyla paylaş


Sınıf nesneleri kopyalama

Atama işlemi hem başlatma işlemini kopyalanacak nesneleri neden.

  • Atama: bir nesnenin değerini başka bir nesneye atandığında, ilk nesneyi ikinci nesnesine kopyalanır.Bu nedenle,

    Point a, b;
    ...
    a = b;
    

    değeri olur b kopyalanması için a.

  • Başlatma: başlatma değeri tarafından geçirilen bağımsız değişken işlevler için yeni bir nesne bildirilmişse veya değer tarafından döndürülen değerler işlevlerden oluşur.

Nesne sınıfı türü için "kopya" semantiği tanımlayabilirsiniz.Örneğin, bu kod göz önünde bulundurun:

TextFile a, b;
a.Open( "FILE1.DAT" );
b.Open( "FILE2.DAT" );
b = a;

Yukarıdaki kod anlamına "dosya1 içeriğini kopyalayın.dat dosya2 için.dat"veya"dosya2 yoksay. gelebilirdat ve b FILE1.DAT ikinci bir tutamaç. " Aşağıdaki gibi her sınıf için uygun kopyalama semantiğini iliştirmelisiniz.

  • Atama işleci kullanarak operator= ile birlikte başvuru sınıf türü dönüş türü ve tarafından geçirilen parametre olarak const başvuru — örneğin ClassName& operator=(const ClassName& x);.

  • Kopya oluşturucusuna kullanarak.Kopya oluşturucusuna hakkında daha fazla bilgi için bkz: Kurucular bildirmek için kurallar.

Kopya oluşturucusuna bildirmezseniz derleyici member-wise kopya oluşturucusuna oluşturur. Kopyayı atama işleci bildirmezseniz derleyici sizin için member-wise kopya atama işleci oluşturur. Kopya oluşturucusuna bildirmek derleyici tarafından oluşturulan kopyayı atama işleci gizlemiyor, ne de tam tersi.Bunlardan herhangi birinin uygularsanız, kod anlamını NET görünecek şekilde, aynı zamanda başka bir uygulamanız önerilir.

Member-Wise atama daha ayrıntılı olarak ele alınan Memberwise atama ve başlatma.

Kopya oluşturucusuna türünde bir bağımsız değişken alır sınıf adı**&**, burada sınıf adı sınıf yapıcısı tanımlanır adıdır.Örne?in:

// spec1_copying_class_objects.cpp
class Window
{
public:
    Window( const Window& ); // Declare copy constructor.
    // ...
};

int main()
{
}

[!NOT]

Kopya oluşturucusuna 's bağımsız değişkeninin türü yapmak const sınıf adı& mümkün.Bu kopya oluşturucusuna kopyalıyor nesne yanlışlıkla değiştirmesini engeller.Ayrıca kopyalama sağlar const nesneler.

Ayrıca bkz.

Başvuru

Özel üye işlevler (C++)