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

C++ में `new` का उपयोग किए बिना ऑब्जेक्ट कैसे बनाएं और कंस्ट्रक्टर्स को कैसे आमंत्रित करें?

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

How to Create Objects and Invoke Constructors Without Using `new` in C  ?

कंस्ट्रक्टर्स और Malloc

नए और डिलीट एक्सप्रेशन के विपरीत, std::malloc किसी ऑब्जेक्ट के लिए मेमोरी आवंटित करने पर कंस्ट्रक्टर को इनवॉइस नहीं करता है। इसलिए, किसी ऑब्जेक्ट को बनाने के साथ-साथ उसके कंस्ट्रक्टर को कॉल करने के लिए, एक वैकल्पिक दृष्टिकोण की आवश्यकता होती है।

संभावित समाधान:

1. नए का उपयोग:
यह प्राथमिक इच्छित उपयोग है, क्योंकि नया स्पष्ट रूप से एक ऑब्जेक्ट बनाता है और बाद में उसके कंस्ट्रक्टर को आमंत्रित करता है।

उदाहरण:

A* a = new A();
delete a;

2. स्पष्ट कंस्ट्रक्टर इनवोकेशन (प्लेसमेंट नया):
इस विधि में मॉलोक का उपयोग करके मेमोरी आवंटित करना और फिर प्लेसमेंट नए सिंटैक्स का उपयोग करके कंस्ट्रक्टर को मैन्युअल रूप से इनवोकेशन करना शामिल है।

उदाहरण:

A* a = (A*)malloc(sizeof(A));
new (a) A();

a->~A();
free(a);

यह ध्यान रखना महत्वपूर्ण है कि नए प्लेसमेंट के लिए सही कंस्ट्रक्टर ओवरलोड के उपयोग की आवश्यकता होती है और इसे संयम से उपयोग किया जाना चाहिए। आम तौर पर, ऑब्जेक्ट निर्माण के लिए नए को नियोजित किया जाना चाहिए, जबकि प्लेसमेंट नया विशिष्ट परिदृश्यों के लिए उपयुक्त है जहां मेमोरी प्रबंधन को मैन्युअल रूप से नियंत्रित किया जाता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3