C ++ क्लास और ऑब्जेक्ट उदाहरण के साथ

विषय - सूची:

Anonim

कक्षा क्या है?

एक सी ++ वर्ग डेटा को जोड़ने और डेटा को एक में हेरफेर करने के तरीकों को जोड़ता है। कक्षाएं वस्तुओं के रूपों को भी निर्धारित करती हैं। किसी वर्ग में निहित डेटा और विधियों को कक्षा के सदस्यों के रूप में जाना जाता है। एक वर्ग एक उपयोगकर्ता-परिभाषित डेटा प्रकार है। वर्ग के सदस्यों तक पहुँचने के लिए, हम कक्षा के एक उदाहरण का उपयोग करते हैं। आप किसी क्लास को किसी ऑब्जेक्ट के लिए ब्लूप्रिंट के रूप में देख सकते हैं।

एक वर्ग एक घर के लिए एक प्रोटोटाइप हो सकता है। यह दरवाजे, खिड़कियां, फर्श आदि के स्थान और आकार को दर्शाता है। इन विवरणों से, हम एक घर का निर्माण कर सकते हैं। घर वस्तु बन जाता है। प्रोटोटाइप से कई घर बनाना संभव है। इसके अलावा, एक कक्षा से कई ऑब्जेक्ट बनाना संभव है।

उपरोक्त आंकड़े में, हमारे पास एक एकल हाउस प्रोटोटाइप है। इस प्रोटोटाइप से, हमने अलग-अलग विशेषताओं वाले दो घर बनाए हैं।

इस ट्यूटोरियल में, आप सीखेंगे:

  • कक्षा क्या है?
  • कक्षा उदाहरण
  • निजी और सार्वजनिक कीवर्ड
  • वस्तु परिभाषा
  • डेटा सदस्यों तक पहुँचना
  • कक्षा सदस्य कार्य
  • कंस्ट्रक्टर और डिस्ट्रक्टर्स

वर्ग घोषणा

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

वाक्य - विन्यास:

class class-name{// data// functions};
  • वर्ग-नाम वर्ग को असाइन करने का नाम है।
  • डेटा वर्ग के लिए डेटा है, जिसे सामान्य रूप से चर के रूप में घोषित किया जाता है।
  • कार्य वर्ग के कार्य हैं।

निजी और सार्वजनिक कीवर्ड

आपको इन दो कीवर्ड के बारे में पता चल गया होगा। वे पहुँच संशोधक हैं।

  • निजी:

जब किसी फ़ंक्शन या वर्ग को परिभाषित करने के लिए निजी कीवर्ड का उपयोग किया जाता है, तो यह निजी हो जाता है। ऐसे केवल कक्षा के भीतर से ही सुलभ हैं।

  • जनता:

दूसरी ओर, सार्वजनिक कीवर्ड, डेटा / फ़ंक्शन को सार्वजनिक करता है। ये कक्षा के बाहर से सुलभ हैं।

वस्तु परिभाषा

वस्तुओं का निर्माण वर्गों से होता है। क्लास ऑब्जेक्ट्स को उसी तरह से घोषित किया जाता है जैसे चर घोषित किए जाते हैं। क्लास का नाम शुरू होना चाहिए, उसके बाद ऑब्जेक्ट का नाम। वर्ग प्रकार की वस्तु।

वाक्य - विन्यास:

class-name object-name;
  • वर्ग-नाम उस वर्ग का नाम है जहां से एक वस्तु का निर्माण किया जाना है।
  • ऑब्जेक्ट-नाम नई ऑब्जेक्ट को असाइन किया जाने वाला नाम है।

किसी वर्ग से एक वस्तु बनाने की इस प्रक्रिया को तात्कालिकता के रूप में जाना जाता है।

डेटा सदस्यों तक पहुँचना

किसी वर्ग के सार्वजनिक सदस्यों तक पहुँचने के लिए, हम (।) डॉट ऑपरेटर का उपयोग करते हैं। ये सार्वजनिक पहुंच संशोधक के साथ चिह्नित सदस्य हैं।

उदाहरण 1:

#include using namespace std;class Phone {public:double cost;int slots;};int main() {Phone Y6;Phone Y7;Y6.cost = 100.0;Y6.slots = 2;Y7.cost = 200.0;Y7.slots = 2;cout << "Cost of Huawei Y6 : " << Y6.cost << endl;cout << "Cost of Huawei Y7 : " << Y7.cost << endl;cout << "Number of card slots for Huawei Y6 : " << Y6.slots << endl;cout << "Number of card slots for Huawei Y7 : " << Y7.slots << endl;return 0;}

आउटपुट:

यहाँ कोड का एक स्क्रीनशॉट है:

कोड स्पष्टीकरण:

  1. अपने कार्यों का उपयोग करने के लिए हमारे कोड में iostream हेडर फ़ाइल शामिल करें।
  2. हमारे कोड में std नेमस्पेस को शामिल करना, बिना कॉल किए उसकी कक्षाओं का उपयोग करना।
  3. फोन नामक एक वर्ग की घोषणा करें।
  4. सार्वजनिक पहुँच संशोधक का उपयोग हम उन चर को चिह्नित करने के लिए कर रहे हैं जिन्हें हम सार्वजनिक रूप से सुलभ बनाने वाले हैं।
  5. एक डबल डेटा प्रकार की परिवर्तनीय लागत की घोषणा करें।
  6. एक पूर्णांक चर नाम स्लॉट की घोषणा करें।
  7. वर्ग शरीर का अंत।
  8. मुख्य () फ़ंक्शन को कॉल करना। कार्यक्रम तर्क को इसके शरीर के भीतर जोड़ा जाना चाहिए।
  9. टाइप फोन के Y6 नामक एक ऑब्जेक्ट बनाएं। इसे इंस्टेंटेशन कहा जाता है।
  10. टाइप फोन के Y7 नामक एक ऑब्जेक्ट बनाएं। इसे इंस्टेंटेशन कहा जाता है।
  11. ऑब्जेक्ट Y6 का उपयोग करके वर्ग फोन के चर / सदस्य लागत पर पहुंचें। मान 100.0 पर सेट है। Y6 की लागत अब 100.0 पर सेट है।
  12. ऑब्जेक्ट Y6 का उपयोग करके वर्ग फोन के चर / सदस्य स्लॉट पर पहुंचें। मान 2 पर सेट है। Y6 के लिए स्लॉट अब 2 पर सेट है।
  13. ऑब्जेक्ट Y7 का उपयोग करके वर्ग फोन के चर / सदस्य लागत पर पहुंचें। मान 200.0 पर सेट है। Y7 की लागत अब 200.0 पर सेट है।
  14. ऑब्जेक्ट Y7 का उपयोग करके वर्ग फोन के चर / सदस्य स्लॉट पर पहुंचें। मान 2 पर सेट है। Y7 के लिए स्लॉट अब 2 पर सेट है।
  15. अन्य पाठ के साथ कंसोल पर Y6 की लागत प्रिंट करें।
  16. अन्य पाठ के साथ कंसोल पर Y7 की लागत प्रिंट करें।
  17. अन्य पाठ के साथ Y6 के लिए स्लॉट की संख्या प्रिंट करें।
  18. अन्य पाठ के साथ Y7 के लिए स्लॉट की संख्या प्रिंट करें।
  19. कार्यक्रम को सफल समापन पर एक मूल्य वापस करना होगा।
  20. मुख्य () फ़ंक्शन के शरीर का अंत।

एक निजी वर्ग क्या है?

निजी के रूप में चिह्नित वर्ग के सदस्यों को केवल कक्षा के भीतर परिभाषित कार्यों द्वारा पहुँचा जा सकता है। वर्ग के बाहर परिभाषित कोई भी वस्तु या कार्य ऐसे सदस्यों तक सीधे नहीं पहुंच सकता है। एक निजी वर्ग के सदस्य को केवल सदस्य और मित्र कार्यों द्वारा पहुँचा जाता है।

एक संरक्षित वर्ग क्या है?

संरक्षित के रूप में चिह्नित वर्ग के सदस्यों को निजी के रूप में चिह्नित लोगों पर एक फायदा है। उन्हें अपनी परिभाषा के वर्ग के भीतर कार्यों द्वारा पहुँचा जा सकता है। इसके अतिरिक्त, वे व्युत्पन्न वर्गों से पहुँचा जा सकता है।

उदाहरण 2:

#include using namespace std;class ClassA {public:void set_a(int val);int get_a(void);private:int a;};int ClassA::get_a(void) {return a;}void ClassA::set_a(int val) {a = val;}int main() {ClassA a;a.set_a(20);cout << "Value of a is: " << a.get_a();return 0;}

आउटपुट:

यहाँ कोड का एक स्क्रीनशॉट है:

कोड स्पष्टीकरण:

  1. अपने कार्यों का उपयोग करने के लिए हमारे कोड में iostream हेडर फ़ाइल शामिल करें।
  2. इसे कॉल किए बिना अपनी कक्षाओं का उपयोग करने के लिए हमारे कोड में std नाम स्थान शामिल करें।
  3. ClassA नामक एक क्लास बनाएं।
  4. सार्वजनिक रूप से सुलभ के रूप में बनाए जाने वाले वर्ग सदस्य को चिह्नित करने के लिए सार्वजनिक पहुंच संशोधक का उपयोग करें।
  5. Set_a नाम का फ़ंक्शन बनाएं (जो एक पूर्णांक मान वैल्यू लेता है।
  6. Get_a () नाम का एक फंक्शन बनाएं।
  7. निजी सदस्य के रूप में बनाए जाने वाले वर्ग सदस्य को चिह्नित करने के लिए निजी एक्सेस संशोधक का उपयोग करें।
  8. एक पूर्णांक चर घोषित करें जिसका नाम a है।
  9. वर्ग शरीर का अंत।
  10. फ़ंक्शन get_a () तक पहुंचने के लिए वर्ग नाम और स्कोप रिज़ॉल्यूशन ऑपरेटर का उपयोग करें। हम यह परिभाषित करना चाहते हैं कि क्या कार्य किया जाता है
  11. फ़ंक्शन get_a () को जब आह्वान किया जाता है तो चर का मान वापस करना चाहिए।
  12. फ़ंक्शन की परिभाषा का अंत get_a ()।
  13. फ़ंक्शन set_a () तक पहुंचने के लिए वर्ग नाम और स्कोप रिज़ॉल्यूशन ऑपरेटर का उपयोग करें। हम यह परिभाषित करना चाहते हैं कि जब इनवॉइस किया जाता है तो फ़ंक्शन क्या करता है।
  14. वैरिएबल वैरिएबल के मान को वैरिएबल ए।
  15. फ़ंक्शन set_a की परिभाषा का अंत ()।
  16. मुख्य () फ़ंक्शन को कॉल करें। इस फ़ंक्शन के शरीर के भीतर प्रोग्राम लॉजिक जोड़ा जाना चाहिए।
  17. ClassA का एक उदाहरण बनाएं और इसे नाम दें a।
  18. उपरोक्त वर्ग उदाहरण और फ़ंक्शन set_a () का उपयोग चर a के लिए 20 का मान निर्दिष्ट करने के लिए करें।
  19. कंसोल पर वैरिएबल के मान के साथ कुछ टेक्स्ट प्रिंट करना। Get_a () फ़ंक्शन को कॉल करके चर का मान प्राप्त किया जाता है।
  20. कार्यक्रम सफल होने पर मूल्य वापस करना चाहिए।
  21. फ़ंक्शन मुख्य के शरीर का अंत ()।

उदाहरण 3:

#include using namespace std;class ParentClass {protected:int value;};class ChildClass : public ParentClass {public:void setId(int x) {value = x;}void displayValue() {cout << "Value is: " << value << endl;}};int main() {ChildClass c;c.setId(21);c.displayValue();return 0;}

आउटपुट:

यहाँ कोड का एक स्क्रीनशॉट है:

कोड स्पष्टीकरण:

  1. अपने कार्यों का उपयोग करने के लिए हमारे कोड में iostream हेडर फ़ाइल शामिल करें।
  2. इसे कॉल किए बिना अपनी कक्षाओं का उपयोग करने के लिए हमारे कोड में std नाम स्थान शामिल करें।
  3. पेरेंटक्लास नाम से एक क्लास बनाएं।
  4. संरक्षित सदस्य को चिह्नित करने के लिए संरक्षित पहुंच संशोधक का उपयोग करें जो संरक्षित है।
  5. एक पूर्णांक चर नाम मान बनाएँ।
  6. वर्ग शरीर का अंत।
  7. चाइल्डक्लास नामक एक नया वर्ग बनाएँ जो कि पेरेंटक्लास को विरासत में मिले।
  8. बाल वर्ग के लिए सुलभ कक्षा सदस्य को चिह्नित करने के लिए संरक्षित एक्सेस संशोधक का उपयोग करें।
  9. सेट नाम का फ़ंक्शन बनाएँ () जो एक पूर्णांक मान x लेता है।
  10. चर x के मान को चर मान पर असाइन करना।
  11. फ़ंक्शन सेटिडेट की परिभाषा का अंत ()।
  12. DisplayValue () नाम से एक फंक्शन बनाएं।
  13. अन्य पाठ के साथ कंसोल पर वैरिएबल नाम के मान को प्रिंट करें।
  14. फ़ंक्शन के शरीर का प्रदर्शन प्रदर्शित होता है ()।
  15. चाइल्डक्लास नामक वर्ग के शरीर का अंत।
  16. मुख्य () फ़ंक्शन को कॉल करें। इस फ़ंक्शन के शरीर के भीतर प्रोग्राम लॉजिक जोड़ा जाना चाहिए।
  17. चाइल्डक्लास का एक उदाहरण बनाएं और इसे सी नाम दें।
  18. चर x के लिए 21 का मान निर्दिष्ट करने के लिए उपरोक्त वर्ग उदाहरण और फ़ंक्शन सेटआईड () का उपयोग करें।
  19. DisplayValue () नामक फ़ंक्शन को कॉल करने के लिए उपरोक्त वर्ग उदाहरण का उपयोग करें।
  20. कार्यक्रम सफल होने पर मूल्य वापस करना चाहिए।
  21. फ़ंक्शन मुख्य के शरीर का अंत ()।

कक्षा सदस्य कार्य

कार्य डेटा में हेरफेर करने में हमारी सहायता करते हैं। कक्षा सदस्य कार्यों को दो तरीकों से परिभाषित किया जा सकता है:

  • वर्ग परिभाषा के अंदर
  • वर्ग परिभाषा के बाहर

यदि किसी फ़ंक्शन को एक वर्ग परिभाषा के बाहर परिभाषित किया जाना है, तो हमें गुंजाइश रिज़ॉल्यूशन ऑपरेटर (: :) का उपयोग करना चाहिए। यह वर्ग और फ़ंक्शन नामों के साथ होना चाहिए।

उदाहरण 2:

#include #include using namespace std;class Guru99{public:string tutorial_name;int id;void printname();void printid(){cout << "Tutorial id is: "<< id;}};void Guru99::printname(){cout << "Tutorial name is: " << tutorial_name;}int main() {Guru99 guru99;guru99.tutorial_name = "C++";guru99.id = 1001;guru99.printname();cout << endl;guru99.printid();return 0;}

आउटपुट:

यहाँ कोड का एक स्क्रीनशॉट है:

कोड स्पष्टीकरण:

  1. अपने कार्यों का उपयोग करने के लिए हमारे कार्यक्रम में iostream हेडर फ़ाइल शामिल करें।
  2. अपने कार्यों का उपयोग करने के लिए हमारे प्रोग्राम में स्ट्रिंग हेडर फ़ाइल शामिल करें।
  3. इसे कॉल किए बिना अपनी कक्षाओं का उपयोग करने के लिए हमारे कोड में std नाम स्थान शामिल करें।
  4. Guru99 नाम से एक क्लास बनाएं।
  5. सार्वजनिक पहुंच संशोधक का उपयोग उन वर्ग सदस्यों को चिह्नित करने के लिए करें जिन्हें हम सार्वजनिक रूप से सुलभ बनाने वाले हैं।
  6. एक स्ट्रिंग चर बनाएं जिसे नाम दिया गया है tutorial_name।
  7. आईडी नाम से एक पूर्णांक चर बनाएं।
  8. Printname () नाम से एक फंक्शन बनाएं। यह फ़ंक्शन वर्ग परिभाषा के भीतर परिभाषित नहीं है।
  9. मुद्रित नाम से एक फ़ंक्शन बनाएं ()। यह फ़ंक्शन वर्ग परिभाषा के भीतर परिभाषित किया गया है। इसका शरीर वर्ग परिभाषा के भीतर जोड़ा गया है।
  10. कंसोल पर अन्य पाठ के साथ परिवर्तनीय आईडी के मूल्य को प्रिंट करें। नोट इसे प्रिंटिड () फ़ंक्शन के निकाय में जोड़ा गया है। यह तभी निष्पादित किया जाएगा जब प्रिंटिड () फ़ंक्शन कहा जाता है।
  11. फ़ंक्शन प्रिंटिड के शरीर का अंत ()।
  12. वर्ग गुरु 99 के शरीर का अंत।
  13. फ़ंक्शन प्रिंटनेम () की परिभाषा की शुरुआत।
  14. अन्य पाठ के साथ कंसोल पर वैरिएबल tutorial_name के मूल्य को प्रिंट करें। नोट यह प्रिंटनेम () फ़ंक्शन के शरीर के भीतर जोड़ा गया है। इसे केवल तब निष्पादित किया जाएगा जब प्रिंटनाम () फ़ंक्शन कहा जाता है।
  15. प्रिंटनाम () फ़ंक्शन की परिभाषा का अंत।
  16. मुख्य () फ़ंक्शन को कॉल करें। इस फ़ंक्शन के शरीर के भीतर प्रोग्राम लॉजिक जोड़ा जाना चाहिए।
  17. क्लास गुरु 99 का एक उदाहरण बनाएं और इसे गुरु99 नाम दें।
  18. वेरिएबल tutorial_name के C ++ का मान असाइन करने के लिए उपरोक्त उदाहरण का उपयोग करें।
  19. वैरिएबल आईडी में 1001 का मान असाइन करने के लिए गुरु 99 उदाहरण का उपयोग करें।
  20. फ़ंक्शन प्रिंटनाम () को कॉल करने के लिए उदाहरण गुरु 99 का उपयोग करें।
  21. कंसोल पर एक नई रिक्त पंक्ति को मुद्रित करने के लिए अंत (अंतिम पंक्ति) कमांड को कॉल करें।
  22. फ़ंक्शन प्रिंटिड () को कॉल करने के लिए उदाहरण गुरु 99 का उपयोग करें।
  23. कार्यक्रम सफल होने पर मूल्य वापस करना चाहिए।
  24. मुख्य () फ़ंक्शन के शरीर का अंत।

कंस्ट्रक्टर और डिस्ट्रक्टर्स

कंस्ट्रक्टर्स क्या है?

निर्माण विशेष कार्य हैं जो वस्तुओं को आरंभ करते हैं। ऑब्जेक्ट बनाते समय C ++ कंपाइलर एक कंस्ट्रक्टर को कॉल करता है। निर्माणकर्ता वर्ग के सदस्यों को मान प्रदान करने में मदद करते हैं। बेशक, यह तब है जब उन्हें कुछ मेमोरी स्पेस आवंटित किया गया है।

विनाशकारी क्या है?

दूसरी ओर विध्वंसक वर्ग की वस्तुओं को नष्ट करने में मदद करते हैं।

कंस्ट्रक्टर का नाम कक्षा के नाम के समान होना चाहिए। कंस्ट्रक्टर्स के पास रिटर्न टाइप नहीं है।

कंस्ट्रक्टर को क्लास बॉडी के अंदर या बाहर परिभाषित किया जा सकता है। यदि वर्ग निकाय के बाहर परिभाषित किया गया है, तो इसे वर्ग नाम और गुंजाइश रिज़ॉल्यूशन ऑपरेटर (: :) के साथ परिभाषित किया जाना चाहिए।

उदाहरण 3:

#include using namespace std;class ClassA {public:ClassA() {cout << "Class constructor called"<

आउटपुट:

यहाँ कोड का एक स्क्रीनशॉट है:

कोड स्पष्टीकरण:

  1. अपने कार्यों का उपयोग करने के लिए कोड में iostream हेडर फ़ाइल शामिल करें।
  2. इसे कॉल किए बिना अपनी कक्षाओं का उपयोग करने के लिए हमारे कोड में std नाम स्थान शामिल करें।
  3. ClassA नामक एक क्लास बनाएं।
  4. जिस सदस्य के बारे में हम सार्वजनिक रूप से सुलभ बनाने वाले हैं, उसे चिह्नित करने के लिए सार्वजनिक पहुँच संशोधक का उपयोग करें।
  5. वर्ग के लिए एक निर्माता बनाएँ।
  6. कंस्ट्रक्टर कहे जाने पर कंसोल पर प्रिंट करने के लिए टेक्स्ट। एंडल एक C ++ कीवर्ड है, जिसका मतलब है एंड लाइन। यह माउस कर्सर को अगली पंक्ति में ले जाता है।
  7. वर्ग निर्माता के शरीर का अंत।
  8. वर्ग के लिए एक विध्वंसक बनाएँ।
  9. विध्वंसक कहे जाने पर कंसोल पर मुद्रित करने के लिए पाठ। एंडल एक C ++ कीवर्ड है, जिसका मतलब है एंड लाइन। यह माउस कर्सर को अगली पंक्ति में ले जाता है।
  10. विध्वंसक के शरीर का अंत।
  11. वर्ग शरीर का अंत।
  12. मुख्य () फ़ंक्शन को कॉल करें। इस फ़ंक्शन के शरीर के भीतर प्रोग्राम लॉजिक जोड़ा जाना चाहिए।
  13. एक क्लास ऑब्जेक्ट बनाएं और इसे नाम दें a। कंस्ट्रक्टर को बुलाया जाएगा।
  14. P नाम का एक पूर्णांक चर बनाएं और इसे 1 का मान प्रदान करें।
  15. वैरिएबल पी का उपयोग करके एक इफ स्टेटमेंट ब्लॉक बनाएं।
  16. एक क्लास ऑब्जेक्ट बनाएं और इसे नाम दें b। विध्वंसक कहा जाएगा।
  17. अगर बयान के शरीर का अंत।
  18. मुख्य () फ़ंक्शन के शरीर का अंत।

सारांश:

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