Constructors in C++

A special function that runs automatically when an object is created.

Constructors in C++

Constructor C++ में class का एक special member function (विशेष सदस्य function) होता है जिसका उपयोग object को initialize (प्रारंभिक मान देना) करने के लिए किया जाता है। Constructor का नाम हमेशा class के नाम के समान होता है और इसका कोई return type नहीं होता है।

Constructor: Constructor एक special member function है जो object create होते समय automatically call होता है और object को initialize करने में सहायता करता है।

Why are Constructors Used?

जब किसी class का object बनाया जाता है, तो उसके data members को प्रारंभिक values देने की आवश्यकता हो सकती है। Constructor इस कार्य को automatically करने में सहायता करता है।

यदि constructor का उपयोग न किया जाए, तो object बनने के बाद data members को अलग-अलग statements द्वारा initialize करना पड़ सकता है। Constructor के माध्यम से object creation के समय ही आवश्यक values दी जा सकती हैं।

Characteristics of a Constructor

Constructor की कुछ महत्वपूर्ण विशेषताएँ निम्नलिखित हैं:

  • Constructor का नाम class के नाम के समान होता है।
  • Constructor का कोई return type नहीं होता है, यहाँ तक कि void भी नहीं।
  • Constructor object create होते समय automatically call होता है।
  • Constructor का उपयोग object को initialize करने के लिए किया जाता है।
  • एक class में एक से अधिक constructors हो सकते हैं, यदि उनके parameter lists अलग हों।
  • Constructor को सामान्य member function की तरह return value के साथ define नहीं किया जाता।

Syntax of a Constructor

Constructor का सामान्य syntax इस प्रकार है:

class ClassName
{
public:
    ClassName()
    {
        // Initialization statements
    }
};

यहाँ ClassName() constructor है। इसका नाम class के नाम के समान है और इसका कोई return type नहीं है।

Simple Constructor Example

निम्न program में Student class का constructor object create होते ही marks को initialize करता है:

#include <iostream>
using namespace std;

class Student
{
public:
    int marks;

    Student()
    {
        marks = 80;
    }

    void display()
    {
        cout << "Marks: " << marks;
    }
};

int main()
{
    Student s;

    s.display();

    return 0;
}
Output:
Marks: 80

यहाँ Student() constructor है। जैसे ही object s बनाया गया, constructor automatically call हुआ और marks की value 80 हो गई।

Constructor is Called Automatically

Constructor को सामान्य member function की तरह explicitly call करने की आवश्यकता नहीं होती। Object create होते समय compiler automatically constructor को call करता है।

#include <iostream>
using namespace std;

class Demo
{
public:
    Demo()
    {
        cout << "Constructor Called";
    }
};

int main()
{
    Demo d;

    return 0;
}
Output:
Constructor Called

यहाँ Demo d; statement execute होते ही Demo() constructor automatically call हो जाता है।

Default Constructor

जिस constructor में कोई parameter नहीं होता है, उसे Default Constructor कहा जाता है। इसे object create करते समय बिना arguments के call किया जाता है।

#include <iostream>
using namespace std;

class Student
{
public:
    int rollNo;

    Student()
    {
        rollNo = 101;
    }
};

int main()
{
    Student s;

    cout << "Roll No: " << s.rollNo;

    return 0;
}
Output:
Roll No: 101

यहाँ Student() एक default constructor है क्योंकि इसमें कोई parameter नहीं है।

Parameterized Constructor

जिस constructor में एक या अधिक parameters होते हैं, उसे Parameterized Constructor कहा जाता है। इसका उपयोग object create करते समय values pass करके data members को initialize करने के लिए किया जाता है।

#include <iostream>
using namespace std;

class Student
{
public:
    int rollNo;
    float marks;

    Student(int r, float m)
    {
        rollNo = r;
        marks = m;
    }

    void display()
    {
        cout << "Roll No: " << rollNo << endl;
        cout << "Marks: " << marks;
    }
};

int main()
{
    Student s(101, 92.5);

    s.display();

    return 0;
}
Output:
Roll No: 101
Marks: 92.5

यहाँ Student(int r, float m) एक parameterized constructor है। Object बनाते समय 101 और 92.5 values constructor को pass की गई हैं।

Multiple Objects with Parameterized Constructor

Parameterized constructor का उपयोग करके अलग-अलग objects को अलग-अलग initial values दी जा सकती हैं।

#include <iostream>
using namespace std;

class Student
{
public:
    int rollNo;
    int marks;

    Student(int r, int m)
    {
        rollNo = r;
        marks = m;
    }

    void display()
    {
        cout << "Roll No: " << rollNo
             << ", Marks: " << marks << endl;
    }
};

int main()
{
    Student s1(101, 85);
    Student s2(102, 92);

    s1.display();
    s2.display();

    return 0;
}
Output:
Roll No: 101, Marks: 85
Roll No: 102, Marks: 92

यहाँ दोनों objects के लिए constructor अलग-अलग values के साथ call हुआ है।

Constructor with Default Arguments

Constructor में default arguments भी दिए जा सकते हैं। यदि object बनाते समय कोई value नहीं दी जाती, तो default value का उपयोग किया जाता है।

#include <iostream>
using namespace std;

class Student
{
public:
    int marks;

    Student(int m = 50)
    {
        marks = m;
    }
};

int main()
{
    Student s1;
    Student s2(90);

    cout << "Student 1 Marks: " << s1.marks << endl;
    cout << "Student 2 Marks: " << s2.marks;

    return 0;
}
Output:
Student 1 Marks: 50
Student 2 Marks: 90

Constructor Defined Outside the Class

Constructor को member function की तरह class के बाहर भी define किया जा सकता है। इसके लिए scope resolution operator :: का उपयोग किया जाता है।

#include <iostream>
using namespace std;

class Student
{
public:
    int marks;

    Student();
};

Student::Student()
{
    marks = 75;
}

int main()
{
    Student s;

    cout << "Marks: " << s.marks;

    return 0;
}
Output:
Marks: 75

यहाँ constructor का declaration class के अंदर और definition class के बाहर दी गई है। Student::Student() में :: operator का उपयोग किया गया है।

Constructor and Object Creation

Constructor object के creation के साथ automatically execute होता है। यदि एक class के multiple objects बनाए जाते हैं, तो constructor प्रत्येक object के लिए call होता है।

#include <iostream>
using namespace std;

class Demo
{
public:
    Demo()
    {
        cout << "Object Created" << endl;
    }
};

int main()
{
    Demo d1;
    Demo d2;
    Demo d3;

    return 0;
}
Output:
Object Created
Object Created
Object Created

यहाँ तीन objects बनाए गए हैं, इसलिए constructor तीन बार automatically execute हुआ।

Constructor Overloading

एक class में एक से अधिक constructors define किए जा सकते हैं। यदि constructors के parameter lists अलग-अलग हों, तो इसे Constructor Overloading कहा जाता है।

#include <iostream>
using namespace std;

class Student
{
public:
    int marks;

    Student()
    {
        marks = 0;
    }

    Student(int m)
    {
        marks = m;
    }
};

int main()
{
    Student s1;
    Student s2(95);

    cout << "Student 1 Marks: " << s1.marks << endl;
    cout << "Student 2 Marks: " << s2.marks;

    return 0;
}
Output:
Student 1 Marks: 0
Student 2 Marks: 95

यहाँ Student class में दो constructors हैं—एक बिना parameter वाला और दूसरा एक parameter वाला। Compiler object creation के अनुसार appropriate constructor को select करता है।

Constructor vs Member Function

Constructor Member Function
Constructor का नाम class के नाम के समान होता है। Member function का नाम class के नाम के समान होना आवश्यक नहीं है।
Constructor का कोई return type नहीं होता। Member function का return type हो सकता है।
Object create होते समय automatically call होता है। सामान्यतः इसे object के माध्यम से call किया जाता है।
मुख्यतः object initialization के लिए उपयोग होता है। Data पर operations perform करने के लिए उपयोग होता है।

Constructor and Initialization

Constructor का सबसे महत्वपूर्ण उपयोग object के data members को initial values देना है।

#include <iostream>
using namespace std;

class Rectangle
{
public:
    int length;
    int breadth;

    Rectangle(int l, int b)
    {
        length = l;
        breadth = b;
    }

    int area()
    {
        return length * breadth;
    }
};

int main()
{
    Rectangle r(10, 5);

    cout << "Area: " << r.area();

    return 0;
}
Output:
Area: 50

यहाँ Rectangle object बनाते समय length और breadth की values constructor को दी गई हैं और constructor ने उन्हें initialize किया है।

Constructor Initialization List

C++ में data members को constructor की initialization list के माध्यम से भी initialize किया जा सकता है। यह तरीका विशेष रूप से class members को सीधे initialize करने के लिए उपयोगी है।

#include <iostream>
using namespace std;

class Student
{
public:
    int rollNo;
    int marks;

    Student(int r, int m) : rollNo(r), marks(m)
    {
    }

    void display()
    {
        cout << "Roll No: " << rollNo << endl;
        cout << "Marks: " << marks;
    }
};

int main()
{
    Student s(101, 95);

    s.display();

    return 0;
}
Output:
Roll No: 101
Marks: 95

यहाँ : rollNo(r), marks(m) initialization list है। इसके माध्यम से data members को constructor body execute होने से पहले initialize किया जाता है।

Important Points

  • Constructor एक special member function है।
  • Constructor का नाम class के नाम के समान होता है।
  • Constructor का कोई return type नहीं होता।
  • Constructor object creation के समय automatically call होता है।
  • Constructor का मुख्य उद्देश्य object को initialize करना है।
  • बिना parameters वाला constructor default constructor कहलाता है।
  • Parameters वाला constructor parameterized constructor कहलाता है।
  • एक class में multiple constructors हो सकते हैं।
  • अलग parameter lists वाले constructors को overload किया जा सकता है।
  • Constructor को class के बाहर भी define किया जा सकता है।
  • Class के बाहर constructor define करते समय scope resolution operator (::) का उपयोग होता है।
  • Constructor को सामान्य member function की तरह return value के साथ define नहीं किया जाता।

Board Focus

Exam के लिए याद रखें:
Constructor → Special member function
Constructor Name → Class के नाम के समान
Return Type → कोई नहीं
Main Purpose → Object initialization
Automatic Call → Object creation के समय
Default Constructor → No parameter
Parameterized Constructor → One or more parameters
Constructor Overloading → Multiple constructors with different parameter lists
Outside Definition → Scope Resolution Operator (::)

Board Important Questions

Very Short Answer Questions

Q1. Constructor क्या है?

Answer: Constructor class का एक special member function है जो object create होते समय automatically call होता है और object को initialize करता है।

Q2. Constructor का नाम कैसा होता है?

Answer: Constructor का नाम class के नाम के समान होता है।

Q3. क्या constructor का कोई return type होता है?

Answer: नहीं, constructor का कोई return type नहीं होता, void भी नहीं।

Q4. Constructor कब automatically call होता है?

Answer: Object create होते समय constructor automatically call होता है।

Q5. Default Constructor क्या है?

Answer: ऐसा constructor जिसमें कोई parameter नहीं होता, default constructor कहलाता है।

Q6. Parameterized Constructor क्या है?

Answer: ऐसा constructor जिसमें एक या अधिक parameters होते हैं, parameterized constructor कहलाता है।

Q7. Constructor को class के बाहर define करने के लिए किस operator का उपयोग होता है?

Answer: Scope resolution operator :: का उपयोग होता है।

Short Answer Questions

Q8. Constructor की मुख्य विशेषताएँ लिखिए।

Answer: Constructor का नाम class के नाम के समान होता है। इसका कोई return type नहीं होता। यह object creation के समय automatically call होता है और object को initialize करने के लिए उपयोग किया जाता है। एक class में multiple constructors भी हो सकते हैं।

Q9. Default और Parameterized Constructor में अंतर बताइए।

Default Constructor Parameterized Constructor
इसमें कोई parameter नहीं होता। इसमें एक या अधिक parameters होते हैं।
Object को predefined/default values दी जा सकती हैं। Object creation के समय values pass की जा सकती हैं।
उदाहरण: Student() उदाहरण: Student(int m)

Q10. Constructor और Member Function में अंतर बताइए।

Constructor Member Function
Class के नाम के समान नाम होता है। कोई भी valid function name हो सकता है।
Return type नहीं होता। Return type हो सकता है।
Automatically call होता है। सामान्यतः manually call किया जाता है।
Object initialization के लिए उपयोग होता है। Operations perform करने के लिए उपयोग होता है।

Q11. Constructor Overloading क्या है?

Answer: जब एक class में अलग-अलग parameter lists वाले एक से अधिक constructors define किए जाते हैं, तो इसे constructor overloading कहते हैं।

Q12. Constructor का उपयोग क्यों किया जाता है?

Answer: Constructor का उपयोग object create होते समय उसके data members को initial values देने और object को उचित initial state में लाने के लिए किया जाता है।

Long Answer Questions

Q13. Constructor को उदाहरण सहित समझाइए।

Answer: Constructor C++ में class का special member function है जिसका नाम class के नाम के समान होता है। इसका कोई return type नहीं होता और object create होते समय यह automatically call होता है। इसका मुख्य उद्देश्य object को initialize करना है।

#include <iostream>
using namespace std;

class Student
{
public:
    int marks;

    Student(int m)
    {
        marks = m;
    }

    void display()
    {
        cout << "Marks: " << marks;
    }
};

int main()
{
    Student s(95);

    s.display();

    return 0;
}
Output:
Marks: 95

यहाँ Student(int m) parameterized constructor है। Object s create करते समय 95 value constructor को दी गई और marks को initialize किया गया।

Q14. Default Constructor का C++ program लिखिए।

#include <iostream>
using namespace std;

class Number
{
public:
    int value;

    Number()
    {
        value = 10;
    }
};

int main()
{
    Number n;

    cout << "Value: " << n.value;

    return 0;
}
Output:
Value: 10

Q15. Parameterized Constructor का उपयोग करके Rectangle का area calculate करने का program लिखिए।

#include <iostream>
using namespace std;

class Rectangle
{
public:
    int length;
    int breadth;

    Rectangle(int l, int b)
    {
        length = l;
        breadth = b;
    }

    int area()
    {
        return length * breadth;
    }
};

int main()
{
    Rectangle r(12, 5);

    cout << "Area: " << r.area();

    return 0;
}
Output:
Area: 60

Q16. Constructor Overloading को उदाहरण सहित समझाइए।

#include <iostream>
using namespace std;

class Number
{
public:
    int value;

    Number()
    {
        value = 0;
    }

    Number(int v)
    {
        value = v;
    }
};

int main()
{
    Number n1;
    Number n2(50);

    cout << "N1: " << n1.value << endl;
    cout << "N2: " << n2.value;

    return 0;
}
Output:
N1: 0
N2: 50

यहाँ Number class में दो constructors हैं। पहला default constructor है और दूसरा parameterized constructor है। अलग-अलग objects के लिए appropriate constructor automatically select किया जाता है।

Quick Revision

  • Constructor: Object initialization के लिए special member function
  • Name: Class के नाम के समान
  • Return Type: कोई नहीं
  • Call: Object creation पर automatically
  • Default Constructor: No parameter
  • Parameterized Constructor: Parameters वाला constructor
  • Constructor Overloading: Multiple constructors with different parameter lists
  • Outside Definition: :: operator का उपयोग
One-Line Revision: Constructor C++ class का special member function है जो object create होते समय automatically call होकर उसके data members को initialize करता है।

Practice Questions

  1. Constructor क्या है?
  2. Constructor की मुख्य विशेषताएँ लिखिए।
  3. Constructor का return type क्या होता है?
  4. Default Constructor और Parameterized Constructor में अंतर बताइए।
  5. Constructor automatically कब call होता है?
  6. Constructor और Member Function में अंतर बताइए।
  7. Constructor Overloading क्या है?
  8. Constructor को class के बाहर कैसे define किया जाता है?
  9. Default constructor का C++ program लिखिए।
  10. Parameterized constructor का उपयोग करके Student class का program लिखिए।
  11. Constructor का उपयोग करके Rectangle का area calculate करने का program लिखिए।
  12. Constructor overloading का उदाहरण program सहित समझाइए।
  13. Initialization list क्या है? उदाहरण सहित समझाइए।
  14. एक class में तीन objects बनाकर constructor के automatic execution को demonstrate करने वाला program लिखिए।
Lesson 8 of 37
On This Page