SORU
27 HAZİRAN 2012, ÇARŞAMBA


Ne'kopyala ve direkt başlatma farklı davranır olmasının ardındaki motivasyon s?

Biraz Why is copy constructor called instead of conversion constructor? ile ilgili

Başlatma için iki sözdizimi direkt ve kopyalama-başlatma vardır:

A a(b);
A a = b;

Onlar için motivasyon bilmek farklı tanımlanan davranışa sahip olmak istiyorum. Kopyalama başlatma için, fazladan bir tane parmağı var, ve o kopya için herhangi bir amaç düşünemiyorum. O zaman bir kopyasını geçici olabilir ve muhtemelen olacak optimize edilmiş, kullanıcı güvenilmiyor oluyor yani fazladan bir kopyasını kendisi değil yeterli bir sebep için farklı davranış. Yani... neden?

CEVAP
27 HAZİRAN 2012, ÇARŞAMBA


Sadece bir spekülasyon, ama Bjarne Stroustrup olmadan bu kadar emin olmak çok zor gerçekten nasıl olduğunu doğrulayan olacak korkuyorum:

Tasarlanmıştır çünkü bu şekilde olduğunu düşünmüştüm böyle bir davranış olacaktır beklendiği ile programcı, o beklediğiniz kopya yapılması zaman = işareti kullanılır ve yapılan ile doğrudan başlatıcı sözdizimi.

Olası kopya elision sadece standart sürümlerinde eklendi sanırım, ama emin değilim - bu birileri kesinlikle standart tarihini kontrol ederek söylemek mümkün olabilir bir şeydir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bigapplemagic

    Bigapplemagi

    22 EYLÜL 2011
  • Numberphile

    Numberphile

    15 EYLÜL 2011
  • Tome Rodrigo

    Tome Rodrigo

    9 Temmuz 2006