Đây là chương trình sau khi sửa →
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#include <iostream> using namespace std; class Element { int value; public: Element(void) { cout << "Element constructed!" << endl; } int Get(void) { return value; } void Put(int val) { value = val; } }; class Collection { Element el1, el2; public: Collection(void) { cout << "Collection constructed!" << endl; } int Get(int elno) { return elno == 1 ? el1.Get() : el2.Get(); } int Put(int elno, int val) { if(elno == 1) el1.Put(val); else el2.Put(val); } }; int main(void) { Collection coll; return 0; } |
Chúng tôi đã thanh lọc hàm main, xóa tất cả mọi thứ không thực sự cần thiết để theo dõi hoạt động của các constructors. Sau khi biên dịch và chạy chương trình. Đây là những gì chúng ta thấy trên màn hình:
1 2 3 |
Element constructed! Element constructed! Collection constructed! |
Kết luận: các constructors của các đối tượng bên trong (các đối tượng lưu trữ bên trong các đối tượng khác) được gọi trước khi các constructors của đối tượng bên được gọi.