मैं जानना चाहता हूं कि ये मूल रूप से एक ही चीज़ हैं या नहीं।एक सी ++ कन्स्ट्रक्टर के संदर्भ पास करना और संदर्भ या गैर-संदर्भ प्रकारों को सहेजना
class ExampleClass {
public:
ExampleClass(Object& newObj) : obj(newObj) {}
private:
Object obj;
}
class ExampleClass2 {
public:
ExampleClass2(Object& newObj) : objReference(newObj) {}
private:
Object& objReference;
}
तो क्या यह कक्षाओं में से किसी के साथ काम नहीं करेगा?
ExampleClass* getExampleObject() {
Object obj;
return new ExampleClass(obj);
}
ExampleClass2* getExample2Object() {
Object obj;
return new ExampleClass2(obj);
}
void main() {
ExampleClass* ec = getExampleObject();
ExampleClass2* ec2 = getExample2Object();
//Do something involving the member objects of ec and ec2
}
तो क्या सदस्य वस्तुएं getExampleObject विधियों दोनों के बाद अमान्य हैं? क्या exampleClass का निर्माता अपने कन्स्ट्रक्टर में संदर्भित ऑब्जेक्ट की एक प्रति सहेजता नहीं है?
आपका कोड संकलित नहीं करता है, क्योंकि आप पॉइंटर्स असाइन नहीं कर सकते हैं (जैसा कि getExampleObject और getExample2Object द्वारा लौटाया गया है) गैर-पॉइंटर चर इको और ec2 पर। – SirDarius
हाँ, मुझे खेद है, मैं * भूल गया था। – user1468729