JaredPar cevabına ek olarak
1-olağan ctor, geçici nesneli 2. fonksiyon benzeri ctor.
Bu kaynağı burada bir yerde derleyin http://melpon.org/wandbox/ farklı derleyicilerle
// turn off rvo for clang, gcc with '-fno-elide-constructors'
#include <stdio.h>
class Thing {
public:
Thing(const char*){puts(__FUNCTION__ );}
Thing(const Thing&){puts(__FUNCTION__ );}
~Thing(){puts(__FUNCTION__);}
};
int main(int /*argc*/, const char** /*argv*/) {
Thing myThing = Thing("asdf");
}
Ve sonucu göreceksiniz.
ISO / IEC 14882 2003-10-15'ten
8.5, bölüm 12
1. ve 2. yapılarınıza doğrudan başlatma adı verilir
12.1, bölüm 13
Kendi türünde yeni nesneler oluşturmak için işlevsel bir gösterim türü dönüştürme (5.2.3) kullanılabilir. [Not: Sözdizimi kurucunun açık bir çağrısına benziyor. ] ... Bu şekilde oluşturulan bir nesnenin adı yoktur. [Not: 12.2, geçici nesnelerin ömrünü açıklar. ] [Not: açık kurucu çağrıları değer vermez, bkz. 3.10. ]
RVO hakkında nereden okunabilir:
12 Özel üye işlevleri / 12.8 Sınıf nesnelerini kopyalama / Bölüm 15
Belirli ölçütler karşılandığında, nesnenin kopyalama yapıcısı ve / veya yıkıcısının yan etkileri olsa bile bir uygulamanın sınıf nesnesinin kopya yapısını atlamasına izin verilir .
Bu tür kopya davranışlarını görüntülemek için yorumdaki derleyici bayrağıyla kapatın)