ที่นี่เราจะดูว่า Constructor ถูกเรียกเมื่อไหร่ มี Constructor หลายประเภท Global, Local, Static Local, Dynamic
สำหรับ Global Object Constructor จะถูกเรียกก่อนเข้าสู่ฟังก์ชัน main
ตัวอย่าง
#include <iostream> using namespace std; class MyClass { public: MyClass() { cout << "Calling Constructor" << endl; } }; MyClass myObj; //Global Object int main() { cout << "Inside Main"; }
ผลลัพธ์
Calling Constructor Inside Main
เมื่อ Object เป็น Non-static Constructor จะถูกเรียกเมื่อ Execution ไปถึงจุดที่สร้าง Object
ตัวอย่าง
#include <iostream> using namespace std; class MyClass { public: MyClass() { cout << "Calling Constructor" << endl; } }; int main() { cout << "Inside Main\n"; MyClass myObj; //Local Object cout << "After creating object"; }
ผลลัพธ์
Inside Main Calling Constructor After creating object
เมื่อ Object เป็น Local Static Constructor จะถูกเรียกเพียงครั้งแรกเท่านั้น ถ้าเรียกฟังก์ชันเดิมซ้ำ จะไม่มีผล
ตัวอย่าง
#include <iostream> using namespace std; class MyClass { public: MyClass() { cout << "Calling Constructor" << endl; } }; void func() { static MyClass myObj; //Local Static Object } int main() { cout << "Inside Main\n"; func(); cout << "After creating object\n"; func(); cout << "After second time"; }
ผลลัพธ์
Inside Main Calling Constructor After creating object After second time
สุดท้ายสำหรับ Dynamic Object Constructor จะถูกเรียกเมื่อสร้าง Object ด้วยออเปอเรเตอร์ new
ตัวอย่าง
#include <iostream> using namespace std; class MyClass { public: MyClass() { cout << "Calling Constructor" << endl; } }; int main() { cout << "Inside Main\n"; MyClass *ptr; cout << "Declaring pointer\n"; ptr = new MyClass; cout << "After creating dynamic object"; }
ผลลัพธ์
Inside Main Declaring pointer Calling Constructor After creating dynamic object