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

ตัวสร้างจะถูกเรียกใน C ++ เมื่อใด


ที่นี่เราจะเห็นเมื่อมีการเรียกตัวสร้าง ตัวสร้างที่นี่มีหลายประเภท โกลบอล โลคัล สแตติกโลคัล ไดนามิก

สำหรับวัตถุส่วนกลาง ตัวสร้างจะถูกเรียกก่อนที่จะเข้าสู่ฟังก์ชันหลัก

ตัวอย่าง

#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