निम्नलिखित सी कोड पर विचार करें:
class Instruction {
public:
virtual void execute() { }
};
class Add: public Instruction {
private:
int a;
int b;
int c;
public:
Add(int x, int y, int z) {a=x;b=y;c=z;}
void execute() { a = b c; }
};
एक अलग वर्ग में:
void some_method() {
vector v;
Instruction* i = new Add(1,2,3)
v.push_back(*i);
}
और दूसरे वर्ग में:
void some_other_method() {
Instruction ins = v.back();
ins.execute();
}
ये कक्षाएं निर्देश वेक्टर साझा करती हैं। हालाँकि, हमें निष्पादन फ़ंक्शन के संबंध में एक चिंता का सामना करना पड़ता है। क्या यह अपना ऐड प्रकार बरकरार रखेगा?
दुर्भाग्य से, ऐसा नहीं होगा। वेक्टर मान संग्रहीत करता है, संदर्भ नहीं। इसका मतलब है कि निर्देश ऑब्जेक्ट को किसी बिंदु पर कॉपी किया जाएगा, जिससे "ऑब्जेक्ट स्लाइसिंग" नामक घटना होगी।
इस समस्या को हल करने के लिए, वेक्टर या, अधिक प्रभावी ढंग से, वेक्टर >.
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3