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

C++ ภายใน?


ที่นี่เราจะเห็นคลาสภายใน ก่อนหน้านั้นเราจะเห็น Default constructors ซึ่งเกี่ยวข้องกับ internals คอนสตรัคเตอร์เริ่มต้นคือคอนสตรัคเตอร์หนึ่งตัว (กำหนดโดยผู้ใช้หรือคอมไพเลอร์) ที่ไม่รับอาร์กิวเมนต์ใดๆ ตอนนี้คำถามก็มาถึง เหตุใดจึงใช้คอนสตรัคเตอร์เริ่มต้น

หากไม่ได้กำหนดคอนสตรัคเตอร์เริ่มต้น คอมไพเลอร์จะประกาศคอนสตรัคเตอร์เริ่มต้นโดยปริยาย ตัวสร้างเริ่มต้นใช้เพื่อเริ่มต้นบางคลาสภายใน จะไม่ส่งผลกระทบต่อสมาชิกของคลาส คอมไพเลอร์แทรกคอนสตรัคเตอร์เริ่มต้นในบางสถานการณ์ที่แตกต่างกัน สมมติว่าคลาสมาจากคลาสอื่นที่มีคอนสตรัคเตอร์เริ่มต้น หรือคลาสหนึ่งที่ไม่มีอ็อบเจ็กต์ของคลาสอื่นที่มีคอนสตรัคเตอร์เริ่มต้น คอมไพเลอร์แทรกโค้ดเพื่อเรียกคอนสตรัคเตอร์เริ่มต้นสำหรับคลาสฐานหรืออ็อบเจ็กต์ที่วางอยู่ภายในอ็อบเจกต์ปัจจุบัน

ให้เราดูรหัสหนึ่งรหัสเพื่อรับแนวคิด

ตัวอย่าง

#include<iostream>
using namespace std;
class Base {
   public:
      // compiler will create one constructor for the class "Base"
};
class ClassA {
   public:
   ClassA(){
      cout << "ClassA Constructor defined by user" << endl;
   }
   int x; //it will not be initialized
};
class ClassB : public ClassA {
   //compiler will create ClassB constructor and add some code to call
   ClassA constructor
};
class ClassC : public ClassA {
   public:
      ClassC() { //user defined consturctor, but compiler will add
         code to call A constructor
         cout << "User defined ClassC Constructor" << endl;
   }
};
class ClassD {
   public:
      ClassD(){
         // User defined default constructor. The compiler will add
         code to call object of ClassA
         cout << "User-defined consturctor for ClassD Constructor" <<
         endl;
   }
   private:
      ClassA obj;
};
int main() {
   Base baseObj;
   ClassB b;
   ClassC c;
   ClassD d;
}

ผลลัพธ์

ClassA Constructor defined by user
ClassA Constructor defined by user
User defined ClassC Constructor
ClassA Constructor defined by user
User-defined consturctor for ClassD Constructor