c++ - Does RVO optimisation happens when a copy constructor is not defined for a class? -
मान लें कि मेरे पास यह कोड है:
वर्ग आधार {सार्वजनिक: शून्य () {} निजी: int n; }; बेस फू () {बेस बी; // प्रोसेसिंग रिटर्न बी; } बेस में प्रतिलिपि कन्स्ट्रक्टर परिभाषित नहीं है और इसके सदस्यों को देखकर कंपाइलर एक को संश्लेषित नहीं करेगा। क्या इस कोड के लिए नामित रिटर्न वैल्यू (एनआरवी) अनुकूलन लागू है? जब एक संकलक NRV लागू होता है तो सटीक नियम क्या है?
सबसे पहले, कोई सटीक नियम नहीं है, क्योंकि एनआरवीओ स्पष्ट रूप से मानक का हिस्सा नहीं है, बल्कि मानक के अन्य भागों द्वारा अनुमति है संकलक को कभी भी एनआरवीओ को नियोजित करने की ज़रूरत नहीं होती है, और अलग-अलग कंपाइलर को एनआरवीओ का उपयोग विभिन्न संरचनाओं से किया जा रहा है।
आपकी स्थिति में, एनआरवीओ के इस्तेमाल को रोकना स्पष्ट नहीं है कोई स्पष्ट विध्वंसक या प्रतिलिपि निर्माता नहीं है, और लौटे गए वैरिएबल को किसी भी सशर्त या लूप ब्लॉक के बाहर घोषित किया जाता है। यह उस // प्रोसेसिंग क्षेत्र में क्या हो रहा है पर निर्भर करता है, हालांकि।
Comments
Post a Comment