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

คอมไพเลอร์ C++ สร้าง Default Constructor เองเมื่อเราเขียน Constructor เองหรือไม่?

ในบทช่วยสอนนี้ เราจะพูดถึงว่าคอมไพเลอร์ C++ จะสร้าง Default Constructor เองเมื่อเราเขียน Constructor เองหรือไม่

โดยทั่วไป คอมไพเลอร์ C++ จะใช้ Default Constructor เมื่อไม่มีการนิยาม Constructor ใดๆ แต่จะใช้ Constructor ที่ผู้ใช้นิยามเสมอหากมีการนิยาม

ตัวอย่างที่ 1: ไม่มี Constructor ผู้ใช้

#include <iostream>
using namespace std;

class myInteger {
private:
    int value;
    // ฟังก์ชันอื่นๆ ในคลาส
};

int main() {
    myInteger I1;
    getchar();
    return 0;
}

เอาต์พุต

Compiles successfully

ตัวอย่างที่ 2: มี Constructor ผู้ใช้

#include <iostream>
using namespace std;

class myInteger {
private:
    int value;
public:
    myInteger(int v) // user-defined constructor
    { value = v; }
    // ฟังก์ชันอื่นๆ ในคลาส
};

int main() {
    myInteger I1; // Error: ไม่มี default constructor
    getchar();
    return 0;
}

เอาต์พุต

Gives error about user-defined constructor not being defined

สรุป

  • หากไม่ประกาศ constructor ใดๆ คอมไพเลอร์จะสร้าง default constructor ให้อัตโนมัติ
  • หากประกาศ constructor ใดๆ เอง (แม้แต่ constructor ที่มีพารามิเตอร์) คอมไพเลอร์จะไม่ สร้าง default constructor ให้
  • หากต้องการ default constructor พร้อมกับ constructor อื่นๆ ต้องประกาศ myInteger() = default; หรือนิยามเอง