Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी ++ में नए ऑपरेटर और ऑपरेटर के बीच अंतर?

C++ में जब हम एक नई वस्तु बनाना चाहते हैं, तो हमें मेमोरी में एक मेमोरी ब्लॉक बनाना होगा, फिर मेमोरी ब्लॉक को इनिशियलाइज़ करने के लिए कंस्ट्रक्टर को भी कॉल करना होगा। हम new कीवर्ड का उपयोग करके मेमोरी एलिमेंट बना सकते हैं। यह नया ऑपरेटर लगातार दो टास्क कर रहा है। लेकिन ऑपरेटर नया केवल मेमोरी स्पेस बनाता है।

नया कीवर्ड

नया ऑपरेटर एक विशेष प्रकार का ऑपरेटर है, जो ढेर खंड पर स्मृति आवंटन के लिए अनुरोध को दर्शाता है। जब पर्याप्त मेमोरी उपलब्ध होती है, तो केवल नए ऑपरेटर मेमोरी को पॉइंटर वेरिएबल में इनिशियलाइज़ करते हैं। जब हम एक सामान्य नए कीवर्ड का उपयोग करके कोई ऑब्जेक्ट बनाते हैं तो यह लगातार दो कार्य करता है

  • ? ऑब्जेक्ट के लिए मेमोरी ब्लॉक को हीप सेक्शन में आवंटित करें
  • ? मेमोरी ब्लॉक को इनिशियलाइज़ करने के लिए कंस्ट्रक्टर को कॉल करें।

उदाहरण कोड

#include <iostream>
using namespace std;
class Box {
   public:
   Box() {
      cout << "Constructor called!" <<endl;
   }
};
int main() {
   Box* myBox = new Box;
}

आउटपुट

Constructor called!

संचालक नया

ऑपरेटर नया एक फ़ंक्शन है। इस फ़ंक्शन का उपयोग नए ऑपरेटर को अधिभारित करने के लिए किया जाता है। इसका उपयोग करके हम कच्ची मेमोरी ब्लॉक आवंटित कर सकते हैं। यह अवधारणात्मक रूप से malloc() या calloc() फ़ंक्शन के समान है। यह फ़ंक्शन कंस्ट्रक्टर को कॉल नहीं करता है इसलिए मेमोरी को इनिशियलाइज़ नहीं किया जाता है। हालाँकि, इस अतिभारित विधि से पॉइंटर को वापस करने के बाद, कंपाइलर उसके बाद कंस्ट्रक्टर को कॉल करता है।

उदाहरण कोड

#include <iostream>
#include <cstdlib>
using namespace std;
class Box {
   public:
   Box() {
      cout << "Constructor called!" <<endl;
   }
   void *operator new(size_t size) {
      cout << "Call Operator New"<<endl;
      void *p = malloc(size);
      return p;
   }
};
int main() {
   Box* myBox = new Box;
}

आउटपुट

Call Operator New
Constructor called!

  1. C++ में रिलेशनल ऑपरेटर(==) और std::string::compare() के बीच अंतर

    रिलेशनल ऑपरेटर ==और std::string::compare() के बीच केवल एक अंतर है। वह वापसी मूल्य है। आंतरिक रूप से, string::operator==() string::compare() using का उपयोग कर रहा है रिलेशनल ऑपरेटर(==) एक बूलियन लौटाता है जो यह दर्शाता है कि 2 तार बराबर हैं या नहीं, जबकि तुलना एक पूर्णांक देता है जो दर्शाता है कि तार

  1. C++ में डॉट (.) ऑपरेटर और -> में क्या अंतर है?

    डॉट और एरो ऑपरेटर दोनों का उपयोग C++ में किसी वर्ग के सदस्यों तक पहुंचने के लिए किया जाता है। वे बस विभिन्न परिदृश्यों में उपयोग किए जाते हैं। सी ++ में, वर्ग, संरचना, या संघ के रूप में घोषित प्रकारों को वर्ग प्रकार माना जाता है। तो निम्नलिखित उन तीनों को संदर्भित करता है। a.b का उपयोग केवल तभी किय

  1. !==और ==! के बीच अंतर! PHP में ऑपरेटर

    !== तुलना ऑपरेटर !== ऑपरेटर एक प्रकार की जांच के साथ दो वस्तुओं की असमानता की जांच करता है। यह डेटाटाइप को परिवर्तित नहीं करता है और एक टाइप किया हुआ चेक बनाता है। उदाहरण के लिए 1 !==1 का परिणाम सही होगा। ==! तुलना ऑपरेटर ==! ऑपरेटर दो ऑपरेटरों का संयोजन है और इसे ==(! ऑपरेंड) के रूप में लिखा जा स