Trong hướng dẫn này, chúng ta sẽ tìm hiểu về nạp chồng phương thức khởi tạo trong C ++ với sự trợ giúp của các ví dụ.
Các hàm tạo có thể được nạp chồng theo cách tương tự như nạp chồng hàm.
Các hàm tạo được nạp chồng có cùng tên (tên của lớp) nhưng số lượng đối số khác nhau. Tùy thuộc vào số lượng và kiểu đối số được truyền vào, hàm tạo tương ứng được gọi.
Ví dụ 1: Nạp chồng khối lệnh
// C++ program to demonstrate constructor overloading #include using namespace std; class Person ( private: int age; public: // 1. Constructor with no arguments Person() ( age = 20; ) // 2. Constructor with an argument Person(int a) ( age = a; ) int getAge() ( return age; ) ); int main() ( Person person1, person2(45); cout << "Person1 Age = " << person1.getAge() << endl; cout << "Person2 Age = " << person2.getAge() << endl; return 0; )
Đầu ra
Người 1 Tuổi = 20 Người 2 Tuổi = 45
Trong chương trình này, chúng ta đã tạo một lớp Person
có một biến tuổi duy nhất.
Chúng tôi cũng đã xác định hai hàm tạo Person()
và Person(int a)
:
- Khi đối tượng person1 được tạo, hàm tạo đầu tiên được gọi bởi vì chúng ta chưa truyền bất kỳ đối số nào. Hàm tạo này khởi tạo tuổi thành
20
. - Khi person2 được tạo, hàm tạo thứ hai được gọi vì chúng ta đã truyền
45
dưới dạng đối số. Hàm tạo này khởi tạo tuổi thành45
.
Hàm getAge()
trả về giá trị của age và chúng tôi sử dụng nó để in tuổi của person1 và person2.
Ví dụ 2: Nạp chồng khối lệnh
// C++ program to demonstrate constructor overloading #include using namespace std; class Room ( private: double length; double breadth; public: // 1. Constructor with no arguments Room() ( length = 6.9; breadth = 4.2; ) // 2. Constructor with two arguments Room(double l, double b) ( length = l; breadth = b; ) // 3. Constructor with one argument Room(double len) ( length = len; breadth = 7.2; ) double calculateArea() ( return length * breadth; ) ); int main() ( Room room1, room2(8.2, 6.6), room3(8.2); cout << "When no argument is passed: " << endl; cout << "Area of room = " << room1.calculateArea() << endl; cout << "When (8.2, 6.6) is passed." << endl; cout << "Area of room = " << room2.calculateArea() << endl; cout << "When breadth is fixed to 7.2 and (8.2) is passed:" << endl; cout << "Area of room = " << room3.calculateArea() << endl; return 0; )
Đầu ra
Khi không có đối số nào được truyền: Diện tích phòng = 28,98 Khi (8,2, 6,6) được truyền. Diện tích phòng = 54,12 Khi chiều rộng được cố định là 7,2 và (8,2) được thông qua: Diện tích phòng = 59,04
- Khi room1 được tạo, hàm tạo đầu tiên được gọi. chiều dài được khởi tạo thành
6.9
và chiều rộng được khởi tạo thành4.2
. - Khi room2 được tạo, hàm tạo thứ hai được gọi. Chúng tôi đã thông qua các đối số
8.2
và6.6
. chiều dài được khởi tạo đối số đầu tiên8.2
và chiều rộng được khởi tạo thành6.6
. - Khi room3 được tạo, hàm tạo thứ ba được gọi. Chúng tôi đã vượt qua một cuộc tranh cãi
8.2
. chiều dài được khởi tạo cho đối số8.2
. breadth được khởi tạo7.2
theo mặc định.
Hướng dẫn được đề xuất : Nạp chồng hàm C ++.