ในบทช่วยสอนนี้ เราจะพูดถึงว่าคอมไพเลอร์ 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;หรือนิยามเอง