Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Khi nào Constructor được gọi trong C++?


Constructor được gọi tự động khi đối tượng được tạo. Thời điểm gọi phụ thuộc vào kiểu lưu trữ (storage duration) của đối tượng.

1. Đối tượng toàn cục (Global) - Static storage duration

#include <iostream>
using namespace std;

class MyClass {
public:
    MyClass() { cout << "Global: Constructor\n"; }
};
MyClass globalObj; // Gọi TRƯỚC main()

int main() {
    cout << "Trong main\n";
    return 0;
}
// Đầu ra:
// Global: Constructor
// Trong main

2. Đối tượng cục bộ (Local) - Automatic storage duration

int main() {
    cout << "Dau main\n";
    MyClass localObj; // Gọi TẠI ĐIỂM KHAI BÁO
    cout << "Sau khi tao doi tuong\n";
}
// Đầu ra:
// Dau main
// Local: Constructor
// Sau khi tao doi tuong

3. Đối tượng static cục bộ (Local static)

void func() {
    static MyClass staticObj; // Chỉ gọi LẦN ĐẦU TIÊN vào func()
}
int main() {
    func(); // Gọi constructor
    func(); // KHÔNG gọi lại
}
// Đầu ra:
// Static: Constructor
// (lần 2 không in gì)

4. Đối tượng động (Dynamic) - new

int main() {
    MyClass* ptr = new MyClass(); // Gọi TẠI new
    delete ptr; // Destructor gọi tại delete
}

Tóm tắt

Loại đối tượngConstructor gọi khi
GlobalTrước main()
Local (auto)Tại dòng khai báo
Local staticLần đầu thực thi dòng khai báo
Dynamic (new)Tại toán tử new