"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > क्या C++ में `वेक्टर` का उपयोग करने पर ऑब्जेक्ट स्लाइसिंग होती है?

क्या C++ में `वेक्टर` का उपयोग करने पर ऑब्जेक्ट स्लाइसिंग होती है?

2024-11-12 को प्रकाशित
ब्राउज़ करें:817

Does Object Slicing Occur When Using a `vector` in C  ?

सी में वेक्टर और बहुरूपता: ऑब्जेक्ट स्लाइसिंग

निम्नलिखित सी कोड पर विचार करें:

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