Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Constructor ใน C++ ถูกเรียกเมื่อใด


ที่นี่เราจะดูว่า 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