ที่นี่เราจะเห็นเมื่อมีการเรียกตัวสร้าง ตัวสร้างที่นี่มีหลายประเภท โกลบอล โลคัล สแตติกโลคัล ไดนามิก
สำหรับวัตถุส่วนกลาง ตัวสร้างจะถูกเรียกก่อนที่จะเข้าสู่ฟังก์ชันหลัก
ตัวอย่าง
#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
เมื่ออ็อบเจกต์ไม่คงที่ คอนสตรัคเตอร์จะถูกเรียกเมื่อการดำเนินการถึงจุด ที่ซึ่งอ็อบเจกต์ถูกสร้างขึ้น
ตัวอย่าง
#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
เมื่ออ็อบเจ็กต์เป็นแบบสแตติกในเครื่อง เฉพาะครั้งแรกเท่านั้น คอนสตรัคเตอร์จะถูกเรียก หากใช้ฟังก์ชันเดิมอีกครั้ง จะไม่ส่งผลกระทบ
ตัวอย่าง
#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
สุดท้ายสำหรับวัตถุไดนามิก ตัวสร้างจะถูกเรียก เมื่อวัตถุถูกสร้างขึ้นโดยใช้ตัวดำเนินการใหม่
ตัวอย่าง
#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