Computer >> Máy Tính >  >> Lập trình >> C ++

C ++ nội bộ?

Ở đây chúng ta sẽ thấy nội bộ của Lớp. Trước đó, chúng ta sẽ thấy các hàm tạo Mặc định, có liên quan đến các hàm bên trong. Hàm tạo mặc định là một hàm tạo (do người dùng hoặc trình biên dịch xác định) không nhận bất kỳ đối số nào. Bây giờ câu hỏi đặt ra, tại sao hàm tạo mặc định được sử dụng?

Nếu phương thức khởi tạo mặc định không được đưa ra, trình biên dịch sẽ ngầm khai báo phương thức khởi tạo mặc định. Các hàm tạo mặc định được sử dụng để khởi tạo một số nội bộ của lớp. Nó sẽ không ảnh hưởng đến thành viên dữ liệu của lớp. Trình biên dịch sẽ chèn hàm tạo mặc định trong một số trường hợp khác nhau. Giả sử một lớp được dẫn xuất từ ​​một lớp khác với hàm tạo mặc định, hoặc một lớp chứa đối tượng chứa của một lớp khác với hàm tạo mặc định. Trình biên dịch chèn mã để gọi hàm tạo mặc định cho lớp cơ sở hoặc đối tượng được đặt bên trong đối tượng hiện tại.

Hãy cho chúng tôi xem một đoạn mã để biết ý tưởng.

Ví dụ

#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;
}

Đầu ra

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