#include <iostream>
struct Box
{
Box() { std::cout << "constructor called" << std::endl; }
Box(const Box&) { std::cout << "Copy constructor called" << std::endl; }
Box(Box&&) { std::cout << "Move constructor called" << std::endl; }
void run() const { std::cout << "Run" << std::endl;}
};
int main()
{
Box a(Box());
a.run();
}
(demo) के रूप में बेनामी वस्तु गुजरकोई भी तर्क
ऊपर कोड मैं उम्मीद कर रहा था में पर कहा जाता है या तो Copy Constuctor
या Move Constructor
तर्क के रूप में गुमनाम वस्तु Box()
गुजर पर कहा जाता है। लेकिन उनमें से कोई भी नहीं बुलाया गया था। कारण शायद copy elision
हो सकता है। लेकिन अज्ञात ऑब्जेक्ट A()
के लिए भी कन्स्ट्रक्टर नहीं कहा जाता है। दरअसल, उपर्युक्त कोड संकलित नहीं होता है और run()
पर कॉल करने पर फ़ंक्शन कंपाइलर ने निम्न त्रुटि दी है।
a.cpp: In function ‘int main()’:
a.cpp:28:7: error: request for member ‘run’ in ‘a’, which is of non-class type ‘Box(Box (*)())’
a.run();
तो जब हम टाइप Box a(Box())
क्या हो रहा है? क्या बनाया जा रहा है?
आपको एमवीपी द्वारा काटा गया है। यह 'बॉक्स ए (बॉक्स()) सोचता है; '''' नामक एक फ़ंक्शन की घोषणा' बॉक्स 'लौटा रही है। – Borgleader
@YSC मुझे यकीन नहीं है कि मैं आपके स्वरूपण से सहमत हूं - मैंने पिछले संस्करण को प्राथमिकता दी थी। – pingul
@pingul छोटे कोड SO पर अधिक ध्यान आकर्षित करते हैं, और मेरा संपादन ओपी के मूल उद्देश्य को बदलने की उम्मीद नहीं करता है। लेकिन यह निश्चित रूप से इसे रोलबैक करने के लिए उनकी कॉल। – YSC