Constructors in C++ Notes | Default Constructor, Parameterized Constructor, Copy Constructor & Constructor Overloading | Basic Computer Engineering | RGPV BTech First Year

Constructors in C++ Notes | Default Constructor, Parameterized Constructor, Copy Constructor & Constructor Overloading | Basic Computer Engineering | RGPV BTech First Year


Constructors in C++

Constructor C++ Programming का एक विशेष प्रकार (Special Type) का Member Function होता है, जिसका मुख्य कार्य Object बनते समय (Object Creation Time) उसे Initialize करना होता है। जब भी किसी Class का Object बनाया जाता है, Constructor स्वतः (Automatically) Execute हो जाता है और आवश्यक Initialization कर देता है।

Constructor Object Oriented Programming (OOP) का अत्यंत महत्वपूर्ण Concept है। इसकी सहायता से Object बनने के साथ ही Data Members को प्रारंभिक Values प्रदान की जा सकती हैं। इससे Program अधिक Reliable, Secure तथा Maintainable बनता है।

RGPV B.Tech First Year के Basic Computer Engineering Subject में Constructors in C++ अत्यंत महत्वपूर्ण Topic है। University Examination, Practical तथा Viva में Default Constructor, Parameterized Constructor, Copy Constructor तथा Constructor Overloading से नियमित रूप से प्रश्न पूछे जाते हैं।

Class



Object Creation



Constructor Executes



Object Initialization

Introduction to Constructor

Object Oriented Programming में प्रत्येक Object को उपयोग करने से पहले Initialize करना आवश्यक होता है। यदि Object के Members को उचित प्रारंभिक Values नहीं दी जाएँ, तो Program गलत परिणाम (Unexpected Output) दे सकता है। इस समस्या के समाधान के लिए Constructor का उपयोग किया जाता है।

Constructor Object Create होते ही Automatically Execute होता है तथा Object को Ready State में ले आता है। Programmer को Constructor को अलग से Call करने की आवश्यकता नहीं होती।


What is Constructor?

Constructor Class का ऐसा Special Member Function है जिसका Name हमेशा Class के Name के समान होता है तथा इसका कोई Return Type नहीं होता। Constructor का मुख्य उद्देश्य Object बनने के समय Data Members को Initialize करना होता है।

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

ऊपर दिए गए उदाहरण में Student() Class का Constructor है। जैसे ही Student Class का Object बनाया जाएगा, Constructor स्वतः Execute हो जाएगा।


Need of Constructor

Constructor का उपयोग Object Creation के समय Automatic Initialization के लिए किया जाता है। इससे Programmer को प्रत्येक Object के लिए अलग-अलग Initialization Code लिखने की आवश्यकता नहीं होती।

  • Object को Automatically Initialize करने के लिए।
  • Default Values Assign करने के लिए।
  • Programming Errors कम करने के लिए।
  • Code Reusability बढ़ाने के लिए।
  • Data Members को Valid State में रखने के लिए।
  • Object Creation Process को आसान बनाने के लिए।
  • Large OOP Applications में Reliable Initialization के लिए।

Advantages of Constructor

Advantage Description
Automatic Initialization Object Create होते ही Members Initialize हो जाते हैं।
Reliable Programming Uninitialized Data की समस्या समाप्त होती है।
Code Reusability Initialization Code बार-बार नहीं लिखना पड़ता।
Easy Maintenance Initialization Logic एक ही स्थान पर रहता है।
Supports OOP Object Oriented Programming को अधिक प्रभावी बनाता है।

Characteristics of Constructor

Constructor की कुछ महत्वपूर्ण विशेषताएँ (Characteristics) होती हैं जो इसे सामान्य Member Function से अलग बनाती हैं। Constructor Object Create होते ही स्वतः Execute होता है तथा Object Initialization का कार्य करता है।

  • Constructor का Name हमेशा Class के Name के समान होता है।
  • Constructor का कोई Return Type नहीं होता।
  • Object Create होते ही Automatically Execute होता है।
  • Constructor को सीधे Call नहीं किया जाता।
  • एक Class में एक से अधिक Constructors हो सकते हैं।
  • Constructor को Overload किया जा सकता है।
  • Constructor Inheritance द्वारा Inherit नहीं होता।

Rules of Constructor

C++ में Constructor बनाते समय कुछ महत्वपूर्ण नियमों (Rules) का पालन करना आवश्यक होता है।

Rule Description
Same Name Constructor का Name Class के Name के समान होना चाहिए।
No Return Type Constructor का कोई Return Type नहीं होता।
Automatic Execution Object Create होते ही Constructor स्वतः Execute होता है।
Can be Overloaded एक Class में अनेक Constructors बनाए जा सकते हैं।
Cannot be Inherited Constructor Inheritance द्वारा प्राप्त नहीं होता।

Syntax of Constructor

Constructor Declare करने की सामान्य Syntax नीचे दी गई है।

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

यहाँ ClassName() Constructor है जिसका Name Class के Name के समान है।


Working of Constructor

Program Starts



Class Defined



Object Created



Constructor Executes



Object Initialized



Program Continues

जब Program में किसी Class का Object बनाया जाता है, तब Constructor Automatically Execute होकर Object के Data Members को आवश्यक प्रारंभिक Values प्रदान करता है।


Constructor Example

#include<iostream> using namespace std; class Student { public: Student() { cout << "Object Created Successfully"; } }; int main() { Student s1; return 0; }

Output

Object Created Successfully

ऊपर दिए गए उदाहरण में जैसे ही Student s1; लिखा गया, Constructor स्वतः Execute होकर Message Display करता है।


Constructor vs Normal Member Function

Constructor Normal Function
Object Create होते ही Automatically Execute होता है। Explicitly Call करना पड़ता है।
कोई Return Type नहीं होता। Return Type हो सकता है।
Object Initialization करता है। विशिष्ट Processing करता है।
Class Name के समान होता है। कोई भी Valid Identifier हो सकता है।

Types of Constructors

C++ में आवश्यकता के अनुसार विभिन्न प्रकार के Constructors का उपयोग किया जाता है। प्रत्येक Constructor का उद्देश्य Object को अलग-अलग तरीके से Initialize करना होता है। Constructor का चयन Program की आवश्यकता एवं Object Initialization के आधार पर किया जाता है।

Constructor Type Purpose
Default Constructor Object को बिना किसी Argument के Initialize करता है।
Parameterized Constructor Arguments की सहायता से Object Initialize करता है।
Copy Constructor एक Object की सहायता से दूसरा Object Create करता है।
Dynamic Constructor Runtime में Dynamic Memory Allocate करता है।

Default Constructor

Default Constructor वह Constructor होता है जिसमें कोई Parameter नहीं होता। यदि Programmer स्वयं कोई Constructor Define नहीं करता, तो Compiler आवश्यकता अनुसार Default Constructor उपलब्ध करा सकता है। Programmer द्वारा बनाया गया Default Constructor Object को प्रारंभिक Values देने के लिए उपयोग किया जाता है।

Example

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

जब Student Class का Object बनाया जाएगा, तब Default Constructor स्वतः Execute होगा।


Program using Default Constructor

#include<iostream> using namespace std; class Student { public: Student() { cout << "Welcome"; } }; int main() { Student s1; return 0; }

Output

Welcome

Characteristics of Default Constructor

  • इसमें कोई Parameter नहीं होता।
  • Object Create होते ही Automatically Execute होता है।
  • Default Values Assign करने के लिए उपयोग किया जाता है।
  • Object Initialization को आसान बनाता है।
  • Beginner Level OOP Programs में सबसे अधिक उपयोग किया जाता है।

When to Use Default Constructor?

Default Constructor का उपयोग तब किया जाता है जब सभी Objects को समान प्रारंभिक (Initial) Values प्रदान करनी हों अथवा Object Create होते ही कोई सामान्य Initialization करना हो।

Situation Reason
Default Initialization सभी Objects को समान प्रारंभिक Value देना।
Simple Programs Program को सरल एवं व्यवस्थित रखना।
Object Creation Object बनने के साथ Initialization करना।
Basic OOP Learning Constructor की मूल कार्यप्रणाली समझने के लिए।

Default Constructor OOP का सबसे सरल Constructor है तथा आगे आने वाले Parameterized Constructor एवं Copy Constructor को समझने के लिए इसकी अच्छी समझ आवश्यक होती है।


Parameterized Constructor

Parameterized Constructor वह Constructor होता है जिसमें एक या एक से अधिक Parameters होते हैं। इसकी सहायता से Object Create करते समय अलग-अलग Values Pass करके Data Members को Initialize किया जा सकता है। यह Default Constructor की तुलना में अधिक Flexible होता है।

Syntax

class Student { public: Student(int r,float m) { ... } };

Example

#include<iostream> using namespace std; class Student { public: int roll; Student(int r) { roll = r; } }; int main() { Student s1(101); cout << s1.roll; return 0; }

Output

101

ऊपर दिए गए उदाहरण में Object Create करते समय 101 Parameter के रूप में Pass किया गया है तथा Constructor ने उसे Data Member roll में Store कर दिया।


Advantages of Parameterized Constructor

  • हर Object को अलग-अलग Initial Values दी जा सकती हैं।
  • Object Initialization अधिक Flexible हो जाता है।
  • Programming Errors कम होती हैं।
  • Runtime पर Values Initialize की जा सकती हैं।
  • Large Applications में अधिक उपयोगी होता है।

Copy Constructor

Copy Constructor ऐसा Constructor होता है जो किसी Existing Object की सहायता से नया Object Create करता है। अर्थात नया Object पुराने Object के Data की Copy प्राप्त करता है।

Syntax

ClassName(const ClassName &obj);

Example

class Student { public: int roll; Student(int r) { roll = r; } Student(const Student &obj) { roll = obj.roll; } };

Copy Constructor Existing Object के Data को Copy करके नया Object तैयार करता है।


Program using Copy Constructor

#include<iostream> using namespace std; class Student { public: int roll; Student(int r) { roll = r; } Student(const Student &obj) { roll = obj.roll; } }; int main() { Student s1(101); Student s2=s1; cout << s2.roll; return 0; }

Output

101

Characteristics of Copy Constructor

  • Existing Object से नया Object Create करता है।
  • Object को Reference द्वारा Receive करता है।
  • Object Copying में Automatically Call हो सकता है।
  • Deep Copy एवं Shallow Copy Concepts में महत्वपूर्ण भूमिका निभाता है।
  • Resource Management के लिए उपयोगी होता है।

Difference between Default Constructor and Parameterized Constructor

Default Constructor Parameterized Constructor
कोई Parameter नहीं होता। एक या अधिक Parameters होते हैं।
Default Initialization करता है। Custom Initialization करता है।
सभी Objects के लिए समान Initialization। प्रत्येक Object के लिए अलग-अलग Initialization।
सरल Programs में अधिक उपयोग। Professional Applications में अधिक उपयोग।

Constructor Overloading

Constructor Overloading वह प्रक्रिया है जिसमें एक ही Class के अंदर एक से अधिक Constructors बनाए जाते हैं। प्रत्येक Constructor का Parameter List अलग होता है। Compiler Object Create करते समय दिए गए Arguments के आधार पर उचित Constructor का चयन करता है।

Constructor Overloading, Compile Time Polymorphism का एक महत्वपूर्ण उदाहरण है। इसकी सहायता से Object को अलग-अलग तरीकों से Initialize किया जा सकता है।


Example of Constructor Overloading

#include<iostream> using namespace std; class Student { public: Student() { cout << "Default Constructor" << endl; } Student(int r) { cout << "Roll = " << r << endl; } Student(int r,float m) { cout << "Roll = " << r << endl; cout << "Marks = " << m << endl; } }; int main() { Student s1; Student s2(101); Student s3(102,89.5); return 0; }

Output

Default Constructor Roll = 101 Roll = 102 Marks = 89.5

Advantages of Constructor Overloading

  • एक ही Class में अनेक प्रकार से Object Initialize किए जा सकते हैं।
  • Program अधिक Flexible बनता है।
  • Code Duplication कम होती है।
  • Object Creation सरल एवं व्यवस्थित होती है।
  • Compile Time पर उचित Constructor Automatically Select हो जाता है।

Dynamic Constructor

Dynamic Constructor ऐसा Constructor होता है जो Object Create करते समय Dynamic Memory Allocation करता है। इसके लिए सामान्यतः new Operator का उपयोग किया जाता है।

जब Program में Runtime पर Memory Allocate करनी हो अथवा Object का Size पहले से निश्चित न हो, तब Dynamic Constructor उपयोगी होता है।

class Sample { int *ptr; public: Sample() { ptr = new int; } };

Constructor Execution Order

यदि किसी Program में कई Objects बनाए जाते हैं, तो प्रत्येक Object के बनने पर उसका Constructor उसी क्रम (Order) में Execute होता है जिसमें Objects Declare किए गए हैं।

Program Starts



Object 1 Created



Constructor 1 Executes



Object 2 Created



Constructor 2 Executes

Difference between Constructor and Destructor

Constructor Destructor
Object Create होने पर Execute होता है। Object Destroy होने पर Execute होता है।
Object Initialization करता है। Allocated Resources Release करता है।
एक Class में अनेक Constructors हो सकते हैं। एक Class में केवल एक Destructor होता है।
Overloading संभव है। Overloading संभव नहीं है।
Class Name के समान होता है। Class Name से पहले ~ लगाया जाता है।

Applications of Constructor

Application Purpose
Object Initialization Object Create होते ही Initial Values देना।
Database Applications Records को Initialize करना।
GUI Software Window एवं Components Initialize करना।
Game Development Game Objects Initialize करना।
Dynamic Memory Runtime Memory Allocation करना।

Advantages of Constructor

  • Object Create होते ही Automatic Initialization हो जाता है।
  • Programming Errors तथा Uninitialized Data की समस्या कम हो जाती है।
  • Code Reusability बढ़ती है।
  • Program अधिक Reliable एवं Secure बनता है।
  • Complex Objects को Initialize करना आसान हो जाता है।
  • Dynamic Memory Allocation को Support करता है।
  • Large Object Oriented Applications के लिए उपयुक्त है।
  • Maintenance तथा Debugging आसान हो जाती है।

Limitations of Constructor

  • Constructor का कोई Return Type नहीं होता।
  • Constructor को Explicitly Call नहीं किया जा सकता।
  • Constructor Inheritance द्वारा प्राप्त नहीं होता।
  • Virtual Constructor का Concept C++ में उपलब्ध नहीं है।
  • गलत Constructor Design होने पर Object Initialization प्रभावित हो सकती है।

Summary

Concept Description
Constructor Object Create होने पर Automatically Execute होने वाला Special Member Function।
Default Constructor बिना Parameters के Object Initialize करता है।
Parameterized Constructor Parameters की सहायता से Object Initialize करता है।
Copy Constructor Existing Object की सहायता से नया Object बनाता है।
Constructor Overloading एक ही Class में अनेक Constructors बनाना।
Dynamic Constructor Dynamic Memory Allocate करने वाला Constructor।
Constructor Execution Object Create होते ही Automatically Execute होता है।

Important Viva Questions

  1. Constructor क्या है?
  2. Constructor की मुख्य विशेषताएँ लिखिए।
  3. Default Constructor क्या होता है?
  4. Parameterized Constructor क्या है?
  5. Copy Constructor क्या होता है?
  6. Constructor Overloading क्या है?
  7. Dynamic Constructor क्या है?
  8. Constructor तथा Destructor में क्या अंतर है?
  9. Constructor का Return Type क्यों नहीं होता?
  10. Constructor Automatically कब Execute होता है?

University Examination Important Questions

  1. Constructor की परिभाषा लिखिए तथा इसकी विशेषताएँ समझाइए।
  2. Default Constructor एवं Parameterized Constructor में अंतर लिखिए।
  3. Copy Constructor को उदाहरण सहित समझाइए।
  4. Constructor Overloading क्या है? उदाहरण सहित समझाइए।
  5. Dynamic Constructor क्या है? इसका उपयोग लिखिए।
  6. Constructor तथा Normal Member Function में अंतर लिखिए।
  7. Constructor तथा Destructor में अंतर लिखिए।
  8. Constructor की आवश्यकता एवं Advantages लिखिए।
  9. Object Initialization में Constructor की भूमिका समझाइए।
  10. Constructor के विभिन्न प्रकार उदाहरण सहित समझाइए।

Conclusion

Constructor C++ Object Oriented Programming का अत्यंत महत्वपूर्ण Feature है। इसका मुख्य उद्देश्य Object Create होते ही उसे Automatically Initialize करना है। Default Constructor, Parameterized Constructor, Copy Constructor तथा Constructor Overloading की सहायता से विभिन्न प्रकार के Objects को सरल एवं प्रभावी तरीके से Initialize किया जा सकता है। बड़े Software Projects, Dynamic Memory Management तथा Real World Applications में Constructors का व्यापक उपयोग किया जाता है। RGPV B.Tech विद्यार्थियों के लिए Constructor Theory, Practical तथा Viva तीनों दृष्टिकोण से अत्यंत महत्वपूर्ण Topic है।

Related Articles

Arrays of Objects in C++ Notes | Object Array, Declaration, Initialization & Examples | Basic Computer Engineering | RGPV BTech First Year

Arrays ...

Read More →

Object as Function Argument & Returning Object from Function in C++ Notes | Pass Object to Function, Return Object & Examples | Basic Computer Engineering | RGPV BTech First Year

Object ...

Read More →

Pointers to Objects in C++ Notes | Object Pointer, Accessing Members using Pointer & Examples | Basic Computer Engineering | RGPV BTech First Year

Pointer...

Read More →

Dynamic Memory Allocation in C++ Notes | new & delete Operators, Heap Memory, Dynamic Objects & Examples | Basic Computer Engineering | RGPV BTech First Year

Dynamic...

Read More →

this Pointer in C++ Notes | this Keyword, Uses, Advantages & Examples | Basic Computer Engineering | RGPV BTech First Year

this Po...

Read More →