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

  • Bratayley

    Bratayley

    30 Aralık 2010
  • hoorahjencar

    hoorahjencar

    6 HAZİRAN 2007
  • Julia Graf

    Julia Graf

    6 Mayıs 2006