कन्स्ट्रक्टर आणि डिस्ट्रक्टर मध्ये फरक

लेखक: Laura McKinney
निर्मितीची तारीख: 1 एप्रिल 2021
अद्यतन तारीख: 14 मे 2024
Anonim
कन्स्ट्रक्टर आणि डिस्ट्रक्टर मध्ये फरक - तंत्रज्ञान
कन्स्ट्रक्टर आणि डिस्ट्रक्टर मध्ये फरक - तंत्रज्ञान

सामग्री


कन्स्ट्रक्टर आणि विध्वंसक हे त्यांच्या वर्गाप्रमाणेच नावाचे सदस्य कार्य करतात. पूर्वीचा प्रकार बांधकाम करणारा ऑब्जेक्ट आरंभ करण्यास मदत करते. उलट, ए विध्वंसक कन्स्ट्रक्टरपेक्षा वेगळा आहे जो तयार नसलेला कन्स्ट्रक्टर डिलीट करतो जेव्हा त्याचा उपयोग होत नाही.

कधीकधी एखाद्या वस्तूचा वापर करण्यापूर्वी त्याचा काही भाग आरंभ करणे आवश्यक असते. उदाहरणार्थ, आम्ही स्टॅकवर कार्य करीत आहोत, आम्ही कोणतीही क्रिया करण्यापूर्वी, स्टॅकचा वरचा भाग नेहमी शून्यावर सेट केला जाणे आवश्यक आहे. स्वयंचलित आरंभ करण्याचे हे वैशिष्ट्य ‘कन्स्ट्रक्टर’ च्या माध्यमातून केले जाते. जसे, एखाद्या ऑब्जेक्टला नष्ट होण्यापूर्वी काही कोड कार्यान्वित करण्याची आवश्यकता असल्यास. उदाहरणार्थ, एखाद्या ऑब्जेक्टला नष्ट होण्यापूर्वी त्याने उघडलेली फाईल बंद करण्याची आवश्यकता असल्यास. हे ‘विध्वंसक’ च्या मदतीने केले जाऊ शकते.

तुलना चार्टच्या मदतीने कन्स्ट्रक्टर आणि डिस्ट्रक्टर दरम्यानच्या काही मूलभूत फरकांचे आढावा घेऊया

  1. तुलना चार्ट
  2. व्याख्या
  3. मुख्य फरक
  4. निष्कर्ष

तुलना चार्ट:

तुलना करण्यासाठी आधारबांधकाम करणाराविध्वंसक
हेतू

हे ऑब्जेक्टला मेमरीचे वाटप करते.हे ऑब्जेक्टची मेमरी कमी करते.
घोषणा वर्ग_नाव (काही असल्यास वितर्क) {};~ वर्ग_नाव (कोणतेही वितर्क नाहीत) {};
युक्तिवाद कन्स्ट्रक्टर वितर्क स्वीकारतो विध्वंसक कोणताही युक्तिवाद स्वीकारत नाहीत.
कॉल करीत आहेऑब्जेक्ट तयार झाल्यावर कन्स्ट्रक्टरला आपोआप कॉल केले जाते.ब्लॉकमधून बाहेर पडल्यास किंवा प्रोग्राम समाप्त होताना डिस्ट्रक्टरला आपोआप कॉल केले जाते.
कार्यरतकन्स्ट्रक्टर ऑब्जेक्टला आधी त्याचे काही मूल्य प्रारंभ करण्यास अनुमती देते, ते वापरण्यापूर्वी.डिस्ट्रक्टर त्याच्या ऑब्जेक्टच्या विनाशाच्या वेळी काही कोड कार्यान्वित करण्याची परवानगी देतो.
अंमलबजावणीचा आदेश

कन्स्ट्रक्टरला क्रमाने क्रमाने कॉल केले जाते.
कन्स्ट्रक्टरच्या उलट क्रमाने डिस्ट्रॅक्टर म्हणतात.
संख्या वर्गात अनेक कंस्ट्रक्टर असू शकतात.वर्गात नेहमीच एकच विध्वंसक असतो.
कॉपी कन्स्ट्रक्टर कॉपी कन्स्ट्रक्टर कन्स्ट्रक्टरला दुसर्‍या ऑब्जेक्टमधून ऑब्जेक्ट घोषित करण्यास आणि आरंभ करण्यास परवानगी देतो.अशी कोणतीही संकल्पना नाही.
ओव्हर लोडिंग कन्स्ट्रक्टर ओव्हरलोड केले जाऊ शकतात.विध्वंसक ओव्हरलोड करणे शक्य नाही.


कन्स्ट्रक्टरची व्याख्या:

बांधकाम करणारा मुळात क्लासचे मेंबर फंक्शन असते, जे ऑब्जेक्टला इनिशिएलाइज करते आणि त्यास मेमरी वाटप करते. बांधकाम व्यावसायिक सहज ओळखले जाऊ शकतात कारण ते घोषित केले आहेत आणि वर्गाच्या त्याच नावाने परिभाषित केले आहेत. कन्स्ट्रक्टरकडे रिटर्नचा प्रकार नसतो; म्हणून, ते काहीही परत करत नाहीत, ‘शून्य ’सुद्धा नाहीत. कन्स्ट्रक्टर नेहमी वर्गातील सार्वजनिक विभागात परिभाषित केला जातो.

वर्गात अनेक बांधकाम करणारे असू शकतात; उत्तीर्ण झालेल्या वितर्कांच्या संख्येवर आणि प्रकारांच्या आधारावर ते ओळखले जाऊ शकतात. वर्गात अनेक बांधकाम करणारे असल्यास; त्यांच्यासह अप्रत्यक्ष कन्स्ट्रक्टर (डू-काहीही कन्स्ट्रक्टर) परिभाषित केले जाणे आवश्यक आहे; हे याशिवाय काहीही करत नाही, संकलक समाधानी करते.

कन्स्ट्रक्टर डिफॉल्ट वितर्कांसह देखील परिभाषित केले जाऊ शकतात. तर, ते ऑब्जेक्टला “डायनॅमिकली” देखील आरंभ करतात. कन्स्ट्रक्टर्सना वारसा मिळू शकत नाही आणि ते व्हर्च्युअल देखील असू शकत नाहीत परंतु, ते ओव्हरलोड केले जाऊ शकतात. त्यांना त्यांच्या पत्त्यावर संदर्भित करणे शक्य नाही.


बांधकाम व्यावसायिकांचे प्रकार

मूलभूतपणे तीन प्रकारचे कन्स्ट्रक्टर आहेत - डीफॉल्ट, पॅरामीटराइज्ड आणि कॉपी कन्स्ट्रक्टर्स.

  • डीफॉल्ट कन्स्ट्रक्टर: हे कन्स्ट्रक्टर आहे जिथे कन्स्ट्रक्टरला कोणताही युक्तिवाद दिला जात नाही. डीफॉल्ट कन्स्ट्रक्टरकडे कोणतेही पॅरामीटर नसते, परंतु डीफॉल्ट कन्स्ट्रक्टरची मूल्ये डीफॉल्टद्वारे (डायनॅमिकली) दिली जाऊ शकतात.
  • पॅरामीटराइज्ड कन्स्ट्रक्टर: या प्रकारचे कन्स्ट्रक्टर युक्तिवाद घेतात; आम्ही अर्ग्युमेंटस म्हणून डेटा सदस्यांना भिन्न मूल्ये पाठवू शकतो.
  • कॉपी कन्स्ट्रक्टर: कॉपी कन्स्ट्रक्टर हा इतर प्रकारच्या कन्स्ट्रक्टरपेक्षा वेगळा आहे कारण तो इतर ऑब्जेक्टचा पत्ता वितर्क म्हणून स्वीकारतो.

बांधकामकर्त्यांची अंमलबजावणी:

वर्ग कॉन्स्ट {इंट ए, बी; सार्वजनिक: कॉन्सट () // पॅरामीटर नसलेला कन्स्ट्रक्टर {a = 0; बी = 0; } कॉन्सट (इंट सी, इंट डी) {// पॅरामीटर ए कंस्ट्रक्टर ए = सी; सी = डी; }}; इंट मेन () {कॉन्ट सी 1; सी 2 (10,20); // हे विधान कन्स्ट्रक्टरला विनंती करते}

जेव्हा सी 1 कोणतेही पॅरामीटर नसल्यास कंस्ट्रक्टर कार्यान्वित होईल, कारण सी 1 कोणतेही पॅरामीटर पास करत नाही. जेव्हा सी 2 तयार होईल तेव्हा कन्स्ट्रक्टरला पॅरामीटर देऊन कार्यान्वित होईल कारण ते कन्स्ट्रक्टरला दोन पूर्णांक पाठवित आहे.

विध्वंसक व्याख्या:

विध्वंसक वर्गाचे मेंबर फंक्शन देखील असते जे ऑब्जेक्टला वाटप केलेल्या मेमरीचे डेमोलोकेट करते. हे वर्गाच्या त्याच नावाने परिभाषित केले आहे, ए च्या आधीचे टिल्डे (~) चिन्ह. कन्स्ट्रक्टरच्या रिव्हर्स ऑर्डरमध्ये डिस्ट्रक्टर्स नेहमीच कॉल केले जातात.

वर्गात नेहमीच एकच विध्वंसक असतो, कारण तो कोणताही युक्तिवाद स्वीकारत नाही. अंमलबजावणीच्या नियंत्रणामुळे ब्लॉक कमी होताच स्थानिक वस्तू नष्ट होतात; दुसरीकडे, संपूर्ण कार्यक्रम समाप्त झाल्यावर जागतिक वस्तू नष्ट केल्या जातात. कंस्ट्रॉलरद्वारे डिस्ट्रक्टरला स्पष्टपणे कॉल केले जाते. जर वर्ग वारशाने प्राप्त झाला असेल आणि एखादा वर्ग पालक वर्गातून आला असेल आणि बाल वर्ग आणि पालक वर्ग दोघांनाही विध्वंसक असतील; त्यानंतर व्युत्पन्न वर्गाचा विध्वंसक प्रथम म्हणतात, त्यानंतर पालक वर्गाचा विनाशक.

विध्वंसकांची अंमलबजावणी:

वर्ग कॉन्स्ट {इंट ए, बी; पब्लिक: कॉन्स्ट (इंट सी, इंट डी) // पॅरामीटरसह कन्स्ट्रक्टर. {ए = सी; सी = डी; कॉट << "अ आणि बीचे मूल्य" <<>

जेव्हा सी 1 ऑब्जेक्ट तयार होते, तेव्हा दोन पॅरामीटर्स पूर्णांक असलेल्या कंस्ट्रक्टरची विनंती केली जाते आणि “ए, बी” सदस्य आरंभ होईल आणि “ए, बी” ची व्हॅल्यू एड होते. यानंतर विध्वंसक विनंती करतात आणि “ऑब्जेक्ट सी 1 नष्ट होतात”.

विध्वंसकांची आवश्यकता

कन्स्ट्रक्टरची निर्मिती काही प्रमाणात मेमरी स्पेस वापरते, कारण ती शेवटी वस्तूंना मेमरीचे वाटप करते. इतर कामांसाठी संसाधने मोकळे करण्यासाठी ऑब्जेक्ट नष्ट करण्यापूर्वी या वाटप केलेल्या मेमरीचे विपुलकरण केले जाणे आवश्यक आहे. उद्दीष्ट हेतूसाठी विक्रेते अत्यंत उपयुक्त आहेत, जे ऑब्जेक्ट्सचा प्रभावीपणे नाश करतात आणि मेमरी सोडण्यासाठी क्लीन-अप कार्य करतात.

  1. कन्स्ट्रक्टरचा मुख्य उद्देश ऑब्जेक्ट्स तयार झाल्यावर मेमरी वाटप करणे होय. त्याउलट, डिस्ट्रक्टरचा मुख्य उद्देश ऑब्जेक्ट नष्ट झाल्यावर त्याची स्मृती नष्ट करणे हा आहे.
  2. कन्स्ट्रक्टरला युक्तिवाद स्वीकारण्याची परवानगी आहे कारण युक्तिवाद वर्गातील डेटा सदस्यांना आरंभ करण्यासाठी वापरला जाऊ शकतो. दुसरीकडे, एखादे काम वितरक स्वीकारत नाही कारण त्याचे एकमेव कार्य ऑब्जेक्टची स्मरणशक्ती कमी करणे होय.
  3. ऑब्जेक्ट तयार झाल्यावर कन्स्ट्रक्टर म्हणतात. याउलट, एखादा प्रोग्राम समाप्त झाल्यावर किंवा प्रोग्राम ज्या ब्लॉकमधून ऑब्जेक्ट बनला आहे त्यामधून बाहेर पडतो तेव्हा डिस्ट्रक्टर म्हणतात.
  4. कन्स्ट्रक्टर सामान्यत: वर्गाच्या डेटा सदस्यांना आरंभ करण्यासाठी वापरला जातो, तर डिस्ट्रॅक्टरचा वापर ऑब्जेक्ट नष्ट होण्यापूर्वी काही कृती करण्याकरिता केला जातो.
  5. कन्स्ट्रक्टर क्रमिक क्रमानुसार कार्यान्वित केले जातात म्हणजे जर बेस वर्गाचा वारसा मिळालेला व्युत्पन्न वर्ग असल्यास आणि व्युत्पन्न वर्गाची ऑब्जेक्ट तयार झाली असेल तर तो प्रथम बेस क्लासच्या कन्स्ट्रक्टर आणि नंतर व्युत्पन्न वर्गाचा कन्स्ट्रक्टर कॉल करेल. याउलट व्युत्पन्न वर्गाच्या विध्वंसकाला प्रथम म्हणतात आणि नंतर बेस क्लास म्हणजे कन्स्ट्रक्टरच्या उलट क्रमाने डिस्ट्रॅक्टर चालवला जातो.
  6. वर्गात, अनेक बांधकाम करणारे असू शकतात जे उत्तीर्ण केलेल्या संख्येच्या वितर्कांद्वारे ओळखले जातात परंतु त्यात फक्त एक डिस्ट्रक्टर असू शकतो.
  7. कॉपी कॉन्स्ट्रक्टरची संकल्पना आहे जी ऑब्जेक्टला दुसर्‍या ऑब्जेक्टपासून आरंभ करण्यास अनुमती देते तर डिस्ट्रक्टरला अशी कोणतीही संकल्पना नसते.
  8. त्याच कन्स्ट्रक्टरच्या नावाखाली वेगळ्या कृती करण्यासाठी कन्स्ट्रक्टर ओव्हरलोड होऊ शकतात. त्याउलट, विध्वंसकांना जास्त लोड केले जाऊ शकत नाही.

निष्कर्ष:

समानता व्यतिरिक्त, तो बांधकाम करणारा आणि विध्वंसक हा वर्गाचा खास सदस्य कार्य आहे आणि समान नाव आहे, त्या दोघांमध्ये आवश्यक फरक आहे, 'कन्स्ट्रक्टर' मेमरी वाटपच्या वेळी आणि 'डिस्ट्रक्टर' येथे म्हणतात ऑब्जेक्ट्स मेमरी डीएलोकेशनची वेळ कंस्ट्रक्टर आणि डिस्ट्रॅक्टर दोघेही वर्गात परिभाषित नसले तरीही कंपाईलरद्वारे स्पष्टपणे कॉल केले जातात.