C++ में Constructor Overloading
In this page:
class ClassName {
public:
ClassName() { } // default
ClassName(type param) { } // one parameter
ClassName(type p1, type p2) { } // two parameters
};
Constructor Overloading क्या है?
Constructor overloading का मतलब है एक class कई constructors define करती है, हर एक की parameters की अलग संख्या या type, और C++ automatically उस एक को call करता है जो object बनते समय इस्तेमाल किए arguments से match करे।
उदाहरण: What is Constructor Overloading?
// Include std::cout and std::cin
#include <iostream>
// Define the type Box
class Box {
// Members below can be accessed from outside the class
public:
int size;
Box() { size = 1; }
Box(int s) { size = s; }
};
// Program execution starts in main()
int main() {
Box a;
Box b(10);
// Print to the console with cout
std::cout << a.size << " " << b.size << std::endl;
// Return 0 to signal that the program finished successfully
return 0;
}
Login to try C/C++/Java/PHP code in the editor
Default Constructor
एक default constructor कोई parameters नहीं लेता और इस्तेमाल होता है जब एक object बिना किसी arguments के बनाया जाए; अगर एक class कोई भी दूसरा constructor define करे, compiler automatically इसे provide करना बंद कर देता है, और अभी भी ज़रूरत होने पर इसे explicitly लिखना होगा।
उदाहरण: The Default Constructor
#include <iostream>
class Box {
public:
int size;
Box() { size = 1; } // used when Box is created with no arguments
};
int main() {
Box b;
std::cout << b.size << std::endl;
return 0;
}
Login to try C/C++/Java/PHP code in the editor
Parameter Count से Overloading
Constructors को बस एक अलग संख्या में parameters लेकर overload किया जा सकता है, objects को creation time पर जितनी information available हो उतनी ज़्यादा या कम से initialize होने देते हुए।
उदाहरण: Overloading by Parameter Count
// Include std::cout and std::cin
#include <iostream>
// Define the type Point
class Point {
// Members below can be accessed from outside the class
public:
int x, y;
Point(int px) { x = px; y = 0; }
Point(int px, int py) { x = px; y = py; }
};
// Program execution starts in main()
int main() {
Point p1(5);
Point p2(5, 10);
// Print to the console with cout
std::cout << p1.x << "," << p1.y << " " << p2.x << "," << p2.y << std::endl;
// Return 0 to signal that the program finished successfully
return 0;
}
Login to try C/C++/Java/PHP code in the editor
Parameter Type से Overloading
Constructors को अलग parameter types accept करके भी overload किया जा सकता है, एक object को उदाहरण के लिए एक int या एक string दोनों से construct होने देते हुए।
उदाहरण: Overloading by Parameter Type
// Include std::cout and std::cin
#include <iostream>
// Include std::string
#include <string>
// Define the type Label
class Label {
// Members below can be accessed from outside the class
public:
std::string text;
Label(int number) { text = std::to_string(number); }
Label(std::string s) { text = s; }
};
// Program execution starts in main()
int main() {
Label a(5);
Label b("Hi");
// Print to the console with cout
std::cout << a.text << " " << b.text << std::endl;
// Return 0 to signal that the program finished successfully
return 0;
}
Login to try C/C++/Java/PHP code in the editor
Delegating Constructors
C++11 से, एक constructor same class के दूसरे constructor को एक initializer-list-style call इस्तेमाल करके delegate कर सकता है, overloads में duplicated initialization logic avoid करते हुए।
उदाहरण: Delegating Constructors
#include <iostream>
class Box {
public:
int size;
Box() : Box(1) {} // delegates to the constructor below
Box(int s) { size = s; }
};
int main() {
Box a;
std::cout << a.size << std::endl;
return 0;
}
Login to try C/C++/Java/PHP code in the editor
- default constructor से एक object बनाने के लिए
Student s();लिखना, जो actually इसकी बजाय एक function declare करता है। Point()के साथPoint(int x = 0)जैसे ambiguous overloads बनाना, ताकिPoint p;ambiguous हो जाए।- share करने की बजाय हर constructor में same initialization code copy करना।
Chapter Quiz — Complete all 14 topics to unlock
0/14 topics done
Complete these topics first: