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