constructor in C++ in Hindi

constructor in C++

सरल भाषा में, constructor एक function member होता है, जिसका इस्तेमाल class -variable को initialize करने के लिए किया जाता है।

जहाँ constructor function का नाम, class-name के समान होता है , जो class object declare होने पर स्वत ही खुद call हो जाता है।

चलिए इसे विस्तार से समझ लेते हैं-

why we use constructor in C++?

class एक user defined data type है लेकिन इसका व्यवहार एक प्रकार से built in data type की तरह होता है-

Built in data type.

int x,y,z;

User-defined data type

class-name x,y,z;

जैसा कि हम जानते हैं, int एक data type है जबकि class-name एक identifier है। दोनों में हम variable declaration कर सकते हैं।

इनका initialization इस प्रकार होगा –

Built in data type  में,

int x = 5; int y = 2; int z =4;

class variable में,

class-name x,y,z;

x.member(5);
y.member(2);
z.member(4);

आप दोनों के बीच अंतर देख सकते हैं built in data type में हमने variable को सीधे initialize किया है जबकि class में ऐसा नहीं है member function द्वारा objects को initialize किया गया है।

यहाँ पर ध्यान दें object initialize करने से मतलब class के data-member को initialize करना है क्योंकि हम सीधे किसी class data member को initialize नहीं कर सकते क्योंकि class के data -member private specifier में declared रहते हैं जिन्हे outside से access नहीं किया जा सकता।

class एक program को security जैसा features provide करता है। जिसके कारण हम class के data member को सीधे initialize नहीं कर सकते हैं इसलिए इस समस्या को दूर करने के लिए C++ में constructor दिया गया है।

इसे आप नीचे दिए गए उदाहरण से समझ सकते हैं –

class constructor
{
    int a,b;
   public:
    void constructor(int x, int y)
    {
       a = x;
       b = y;
    }
};
constructor obj(3,4); // direct initialization

✍: यदि किसी class में कोई values assign नहीं किया गया है, तो constructor स्वत ही class के data member को initialize कर देता है जिसका मान built in type की तरह zero या garbage हो सकता है।

rule for declaring a constructor in C++

  • एक constructor को class के public में declare किया जाता है जबकि इसकी definition , outside class या inside class हो सकती है (अन्य members की तरह scope resolution operator का use करके)।
  • constructor member , class -name के समान ही होता है। जिसका यह member होता है।
  • जैसे ही उस class का object declare किया जाता है (जिसका यह member होता है) यह स्वतः ही call हो जाता है।
  • ये कोई भी value return नहीं करते हैं अर्थात ये return type function नहीं होते। हालाँकि यह void type भी नहीं होगा।
  • एक constructor member को C++ में inherit नहीं किया जा सकता है हालांकि इन्हे derive class से call किया जा सकता है।
  • क्योंकि constructor एक function है, इसलिए यह function overloading को support करता है।

Type of constructor in C++

  • Default constructor
  • Parameterized constructor
  • Copy constructor

Default constructor in C++

एक constructor जो कोई भी arguments pass नहीं करता है अर्थात बिना parameters प्रकार के function होते हैं।, default constructor कहा जाता है।

एक default constructor का syntax नीचे दिया गया है-

syntax

class construct
{
  public:
   construct()
    {
       body of constructor member;
    }
};

एक default constructor का syntax नीचे दिया गया है, जहाँ program में construct() एक default constructor है-

#include<iostream.h>
#include<conio.h>

 class construct
  {
    public:
     construct(void);   // constructor declaration in public mode
  }; 

    construct::construct(void)     // constructor definition outside class
     {
       cout<<"constructor called:\n";
     }

 void main()
  {
    clrscr();

    construct x;   // object x declare

    getch();
  }

OUTPUT

constructor called:

हर बार जब class का एक नया object declare होता है constructor function स्वचालित रूप से call करेगा, जिसका अर्थ है कि new object स्वत ही रूप से initialize होगा।

उदाहरण के लिए-

construct x, y, z;

अर्थात ,

constructor called
constructor called
constructor called

एक default constructor program में एक class को visible करता है क्योंकि जैसे ही class object declared होता है, यह automatic call हो जाता है। अलग से किसी function member call नहीं करना पड़ता है,

अगर program में default constructor declared नहीं है तो compiler स्वचालित रूप से एक default constructor प्रदान करता है यह parameterized constructor में बताया गया है।

Parameterized Constructor in C++

जैसे कि इसके नाम से पता चलता है कि जो constructor, parameter pass करता है, parameterized constructor कहलाता है।

इसका syntax नीचे दिया गया है-

function-name(parameter-list);

यहाँ याद रखें, function-name class-name समान होंगे जबकि parameter list data-type को दर्शाता है।

Example

#include<iostream.h>
#include<conio.h>

 class construct
  {
     int a,b;
    public:
      // construct(){ }      default constructor invoked by compiler
      construct(int,int);         //peramitrized constructor
  };

  construct::construct(int x,int y)           // constructor defination outside class
   { 
     a = x;
     b = y;
     cout<<"Total : "<<a+b<<endl;
   }

 void main()
  {
    clrscr();

    construct x(2,3);

    getch();
  }

OUTPUT

Total: 5

: Default constructor का उपयोग समान values के लिए किया जाता है, वहीं different values initialization के लिए parameterized constructor का उपयोग किया जाता है।

use of constructor

  • constructor का उपयोग class -object को initialize करने के लिए किया जाता है।
  • क्योंकि constructor object declare होते ही call हो जाते हैं इसलिए किसी task को execution time पर perform करने के लिए constructor को प्रयोग में ला सकते हैं इसका एक अच्छा उदाहरण एक website में server से connection establish करने में हो सकता है (constructor में connection defined करके ) जहां प्रत्येक webpage के loading के समय constructor स्वत: ही call होकर connection establish कर देता है।

हालांकि, class -variable को एक normal function से भी initialize किया जा सकता है, लेकिन जहां number of object बढ़ने लगते हैं जिसे यह जटिल हो जाता है जबकि constructor में newly created: object स्वत ही initialized हो जाता है।

Note ✍: built in data type , out of scope जाने पर compiler द्वारा स्वत: ही destroy हो जाते हैं जबकि class में इसके लिए destructor को प्रयोग में लाते हैं।


previous – class and object in C++ in hindi
next – destructor in C++ in hindi


3 thoughts on “constructor in C++ in Hindi”

Average
4.5 Based On 2

Leave a Reply

Your email address will not be published. Required fields are marked *