Nếu một lớp có nhiều hơn một constructor, một trong số chúng có thể được chọn trong quá trình tạo ra đối tượng. Điều này được thực hiện bằng cách xác định dạng của danh sách tham số liên quan đến tên lớp. Danh sách này phải tương thích với một trong những constructor sẵn có của lớp. Chúng tôi đã sửa lại chương trình một chút, lớp Class có 2 constructor.
Chúng tôi đã tạo ra hai đối tượng mới bên trong các hàm main. Chúng khác nhau về hàm khởi tạo được sử dụng để tạo ra mỗi đối tượng. Kết quả là các trường của chúng được gán những giá trị khác nhau.
Chương trình giờ sẽ như sau →
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#include <iostream> using namespace std; class Class { public: Class(void) { cout << "Object constructed (#1)" << endl; } Class(int v) { value = v; cout << "Object constructed (#2)" << endl; } ~Class(void) { cout << "Object destructed! val = " << value << endl; } void IncAndPrint(void) { cout << "value = " << ++value << endl; } int value; }; int main(void) { Class *ptr1, *ptr2; ptr1 = new Class; ptr2 = new Class(2); ptr1 -> value = 1; ptr1 -> IncAndPrint(); ptr2 -> IncAndPrint(); delete ptr2; delete ptr1; return 0; } |
Chương trình in ra màn hình như sau:
1 2 3 4 5 6 |
Object constructed (#1) Object constructed (#2) value = 2 value = 3 Object destructed! val = 3 Object destructed! val = 2 |