Bir nesnenin 2 initailizasyonu arasında fark var mı. ikinci başlatma new
operatörü ile bir gösterici olması amaçlanmamıştır olduğuC++ nesne başlatma ve yapıcı semantiği
Object obj(constructor_arguments);
veya
Object obj = Object(constructor_arguments);
not edin. Öbek olmayan bir değişken olması amaçlanmıştır.
GCC'de hem derleme hem de iyi çalışır ve gerçekten bir fark olup olmadığını veya her iki ifadenin de anlamsal olarak aynı olup olmadığını merak ediyorum.
Gerçek bir fark olup olmadığını görmenin en iyi yolu, oluşturulan montaj kodunu kontrol etmektir. İlk başlatma daha iyidir, ancak derleyicinin sihrini yapmasına izin verirseniz, ikinci sürüm muhtemelen aynı şey için optimize edilir. –
http://stackoverflow.com/questions/1051379/is-there-a-difference-in-c-between-copy-initialization-and-direct-initializati – syam
@MarcClaesen'in olası kopyasının, oluşturulan koda bakılması anlamına gelir. en iyi yol. Aslında, bu yanlış sonuçlara yol açabileceğinden en kötü yoldur (bu durumda). –