Bilgi Merkezi
Bundan sıkıldım, bana başka bir şey göstersen?

Object copy




This makale veya kısım yıkanıp temizlenmeyi in kaliteli standardıyla karşılaşmak için gerektirebilir.
bu makale geliştirene lütfen yardım eder
daha fazla belirli bir mesaj takip eden bu makaleni geliştiren bu makaleni geliştirenene lütfen yardım eder veya Bunu değiştirir. Bu makale Nisan 2006dan beri etiketlenmiş. ( Yardım , konuşma) Bilgisayar programlarında olan en yaygın prosedürlerin

Onesi. Veri kopya etmesidir Bir nesne nesne-oriented programlama dillerinde karma bir veri tiptir. Hareket neyin içinde bir nesne tanımlayan 1
Object copy1
böyle Aynı veri tipinin başka nesnesine kopya eden hareket neyin içinde bir nesneni tanımlayan hareket neyin içinde bir nesneni tanımlayan 1
Object copy1
böyle Atfetmesi var. Bir nesne reuse tüm veya yeni bir bağlamda verisinin bölümünü kopya edilen için olur.



Contents

//

'i görür. En basit yöntem atama operatörünü kullanmaktır" =" . Bu seçme neredeyse tümde , var olur , Eğer tüm olursa dilleri programlıyor. Takip eden örnek şovları C++ 'da bunu nasıl yapılacağı. Nesne vektörü sınıf vektörü { halka nasıl benzediği



// tanımı: İnt x , y , z; }; . . . Vektör bir , B; Bir. X = 10; Bir. Y = 20; Bir. Z = 30; B = bir; Kaynak nesnesinin B
tüm atfetmesine // kopya bir hedef nesnesinin uygun atfetmesine kopya edilir.

In bundan önceki örnek , nesne birin tüm atfetmesinin değerleri nesne B 'da uygun atfetmeye kopya edildi. Bu teknik kontrol için ihtiyaç ve hangisi değili kopya edilene atfeten yok kadar güzel uzundur. Bu zahmet bazı nesne-oriented programlama sı teklifisi bir özelliği yenmek yenmek bu zahmet bazı nesne-oriented programlama sı teklifisi bir özelliği operatör fazla yüklemesini çağırdı.

Another yol onda o yapan nasıl bir nesnenin yapı bir kopyasınacağı. Yaratılıştır Bu yaklaşma alıntı takibetmeyi belgelerle ispat eder. Nesne vektörü sınıf vektörü { halka nasıl benzediği

// tanımı: İnt x , y , z; }; . . . Vektör bir; Bir. X = 10; Bir. Y = 20; Bir. Z = 30; Vektör B( Bir) ; B'in creation

In bu durumundaki B 'a // kopya bir , tam bir kopya inşaatçisi önceki örnekte ile aynı sonuç başarırdı. Eğer bir bilgisayar programcısı atfetmenin, ne kopya edilmiş olmak olduğu belirtmek isterse o veya o açık kopya inşaatçisini yazabilir.

açık bir kopya inşaatçisi tanımlayan occurs

If biz değil kopya etmene karşı çıkmayınca[ , C++ yerine getirmeyi yaratacak [ Copy

  • When bir nesne deÄŸerin yanından gecilir.
  • When bir fonksiyon bir nesneye geri döner.
    örnek: Kedi makeCat( * adı kavurun) { kedi Birleşik Kralllığı( Ad) ; // örnek Birleşik Kralllığı dönüşü Birleşik Kralllığı'nı yaratır; // kopya inşaatçisi bir fonksiyonun bir parametri olan kullanılmış to// dönüş örneği Birleşik Kralllığı }
  • When bir nesnedir.
    örnek: TakeCadı geçersiz kılın( Kedi c) Bu durumdaki { // , bir kopya inşaatçisi nesnenin yerel bir copy//u yaratırdı. }
  • Also , operatörü kullanıyor olunca" =" ( Atama) Nesne olmayı kopya ediyor. Bu atama operatörünü gerektirir( Operatör =) Fazla yüklenmiÅŸ , yoksa yalnızca sığ yer kopyasısı olmak olmak fazla yüklenmiÅŸ , yoksa yalnızca sığ yer kopyasısı yapılır.

    Example:

    Cat bir; Kedi b; Bir = b; Atama operator

    derin vs kullanma. Sığ yer copy

    In hesaplama , Derin bir kopya orijinal nesnenin verisi sarılan tamı içeren bir kopyadır. , Ona orijinal nesnenin kullanılmışı olmak için bağımsız olarak izin veriyor Karşıtlıkta , Bir sığ yer kopyası orijinal tarafından ve kopya paylaşılan veriye birleşmiş olan bir kopyadır.

    For örnek , , Ve eğer sığ yer kopyası işaretçinin, aynı ipe nerede yöneldiği bir nesneni yaradacak olurken bir C++ sınıf hatta bir geçersiz-terminated ipe bir işaretçi , derin kopya kopya ipi ,ı içerirsenin, her ikisi nesneleri etkileyen ona değiştirir.

    Shallow kopyalar nesneler saymaya işaret edince yaygındır.

    derin kopya implementation

    If siz iptal edilmiş kopya inşaatçisi boyunca doğru veri transfer temin etmek için bunlar 4 yöntemler veya atama operatörünü tamamlamaya ihtiyaç duyan derin bir kopya sizi tamamlamak genellikle istersiniz.

    1. Constructor( Bilgisayar bilimi) - siz dinamik veri structures
    2. Copy inşaatçinizi buraya tahsis edersiniz- Siz dinamik veri yapılarınız ve nesneden onlar verisine kopya , o siz get
    3. Overload atama operatörünü buraya tahsis edersiniz- Siz dinamik veri yapılarınız ve nesneden onlar verisine kopya , o siz get
    4. Destructoru buraya yeniden tahsis edersiniz( Bilgisayar bilimi) - siz çoğu nesnelerin kopyasını yapan kolaycaya kullanılmış olan bir kopya inşaatçisini çağıran tüm objects

      A gömme yöntemin tahsis edilmiş veri structures

    kopyalamanızı buraya silersiniz. Bilgisayar programcısılar tümün bir recursive kopyası atfettiği gibi kopya inşaatçisini tipik olarak tamamlar. ve Tüm nesnelerini nesneye , bir-tarafından-bir ait oluyor Bu pek çok zamanı alabilir. Listelerin kopyalaması , örneğin , her bir öğe kopya etmeyi gerektirir.

    Implementors bir nesnenin aynı kopyalarının, ek belleğe toplamayanı sayıyor olan referansla bazı kopya inşaatçileri öyle kurar. Bu teknik dahili nesne verisine giren düşük-düzeyle fena halde karşılıklı birbirini etkiler. Defansif kopya nesnenin, şu anda kopyalamanını var olan bir devleti tuttuğu temin etmek için bir davranış dır. Bir nesne kopya etme gören

    Yapmak için korkunç bir şeydir? Nesneler kopya etmenin bu makale adresler konusu ve nesneler kopya etme için kod yazmak için doğru yol.
    defensive copy ile ilgili Anahtar Kelimeler :you used constructor copied and attributes object this data When copying objects Vector that copy all operator the assignment This

    Bu makale Wikipedia' dan çarpma olup GNU FDL lisansı altındadır. Bu yazıyı yazan arkadaşlar buradadır.
    Bir Şey Öğren bir Ferruh Mavituna aksiyonudur ve aktivist bir Wiki forkudur.

    Wußten Sie das? - Lernet was