करने के लिए संलग्न में JaredPar जवाब
अस्थायी ऑब्जेक्ट के साथ 1-सामान्य ctor, 2nd-function-like-ctor।
इस स्रोत को कहीं और संकलित करें http://melpon.org/wandbox/ विभिन्न संकलक के साथ
// 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");
}
और आपको परिणाम दिखाई देगा।
आईएसओ / आईईसी 14882 2003-10-15 से
8.5, भाग 12
आपका पहला, दूसरा निर्माण प्रत्यक्ष-आरंभीकरण कहलाता है
12.1, भाग 13
एक कार्यात्मक संकेतन प्रकार रूपांतरण (5.2.3) का उपयोग इसके प्रकार की नई वस्तुओं को बनाने के लिए किया जा सकता है। [नोट: सिंटैक्स कंस्ट्रक्टर के स्पष्ट कॉल की तरह दिखता है। ] ... इस तरह से बनाई गई एक वस्तु अनाम है। [नोट: 12.2 अस्थायी वस्तुओं के जीवनकाल का वर्णन करता है। ] [ध्यान दें: स्पष्ट कंस्ट्रक्टर कॉल लैवल्स का उत्पादन नहीं करते हैं, 3.10 देखें। ]
आरवीओ के बारे में कहां पढ़ें:
12 विशेष सदस्य कार्य / 12.8 कक्षा की वस्तुओं की प्रतिलिपि बनाना / भाग 15
जब कुछ मानदंडों को पूरा किया जाता है, तो एक कार्यान्वयन को एक क्लास ऑब्जेक्ट की कॉपी निर्माण को छोड़ना होता है, भले ही कॉपी कंस्ट्रक्टर और / या ऑब्जेक्ट के लिए विनाशकारी साइड इफेक्ट हो ।
इस तरह के कॉपी-व्यवहार को देखने के लिए टिप्पणी से संकलक ध्वज के साथ इसे बंद करें)