ตัวสร้างเป็นฟังก์ชันของคลาสที่ดำเนินการเมื่อมีการสร้างวัตถุใหม่ของคลาส ตัวสร้างมีชื่อเดียวกับคลาสและไม่มีประเภทส่งคืน แม้แต่เป็นโมฆะ มีประโยชน์หลักในการจัดเตรียมค่าเริ่มต้นสำหรับตัวแปรของคลาส
คอนสตรัคเตอร์สองประเภทหลักคือคอนสตรัคเตอร์เริ่มต้นและคอนสตรัคเตอร์แบบกำหนดพารามิเตอร์ โดยมีรายละเอียดดังนี้
ตัวสร้างเริ่มต้น
ตัวสร้างเริ่มต้นไม่ใช้พารามิเตอร์ใด ๆ หากโปรแกรมเมอร์ไม่ได้จัดเตรียมคอนสตรัคเตอร์เริ่มต้นไว้อย่างชัดเจน คอมไพเลอร์จะจัดเตรียมคอนสตรัคเตอร์เริ่มต้นโดยปริยาย ในกรณีนั้น ค่าดีฟอลต์ของตัวแปรจะเป็น 0
โปรแกรมที่แสดงคอนสตรัคเตอร์เริ่มต้นมีดังต่อไปนี้
ตัวอย่าง
#include <iostream>
using namespace std;
class A {
private:
int num1, num2 ;
public:
A() {
num1 = 5;
num2 = 7;
}
void display() {
cout<<"num1 = "<< num1 <<endl;
cout<<"num2 = "<< num2 <<endl;
}
};
int main() {
A obj;
obj.display();
return 0;
} ผลลัพธ์
num1 = 5 num2 = 7
ในโปรแกรมข้างต้น คลาส A มีคอนสตรัคเตอร์เริ่มต้นที่เริ่มต้น num1 และ num2 เป็น 5 และ 7 นอกจากนี้ยังมีฟังก์ชัน display() ที่พิมพ์ค่า num1 และ num2 ข้อมูลโค้ดสำหรับสิ่งนี้มีดังต่อไปนี้
class A {
private:
int num1, num2 ;
public:
A() {
num1 = 5;
num2 = 7;
}
void display() {
cout<<"num1 = "<< num1 <<endl;
cout<<"num2 = "<< num2 <<endl;
}
}; ฟังก์ชัน main() มีคำจำกัดความของอ็อบเจ็กต์สำหรับอ็อบเจ็กต์ประเภท A จากนั้นฟังก์ชัน display() จะถูกเรียก ดังแสดงด้านล่าง
A obj; obj.display();
ตัวสร้างแบบกำหนดพารามิเตอร์
ตัวสร้างพารามิเตอร์สามารถรับอาร์กิวเมนต์เพื่อเริ่มต้นวัตถุเมื่อถูกสร้างขึ้น พารามิเตอร์จะถูกเพิ่มไปยังคอนสตรัคเตอร์แบบกำหนดพารามิเตอร์ เช่นเดียวกับที่เพิ่มในฟังก์ชันปกติ ตัวสร้างพารามิเตอร์สามารถเรียกได้ว่าโดยปริยายหรือโดยชัดแจ้ง
โปรแกรมที่แสดงคอนสตรัคเตอร์แบบกำหนดพารามิเตอร์มีดังนี้
ตัวอย่าง
#include <iostream>
using namespace std;
class A {
private:
int num1, num2 ;
public:
A(int n1, int n2) {
num1 = n1;
num2 = n2;
}
void display() {
cout<<"num1 = "<< num1 <<endl;
cout<<"num2 = "<< num2 <<endl;
}
};
int main() {
A obj(3,8);
obj.display();
return 0;
} ผลลัพธ์
num1 = 3 num2 = 8
ในโปรแกรมข้างต้น คลาส A มีคอนสตรัคเตอร์แบบกำหนดพารามิเตอร์ที่เริ่มต้น num1 และ num2 ด้วยค่าที่จัดเตรียมโดย n1 และ n2 นอกจากนี้ยังมีฟังก์ชัน display() ที่พิมพ์ค่าของ num1 และ num2 ข้อมูลโค้ดสำหรับสิ่งนี้มีดังต่อไปนี้
class A {
private:
int num1, num2 ;
public:
A(int n1, int n2) {
num1 = n1;
num2 = n2;
}
void display() {
cout<<"num1 = "<< num1 <<endl;
cout<<"num2 = "<< num2 <<endl;
}
}; ฟังก์ชัน main() มีคำจำกัดความของอ็อบเจ็กต์สำหรับอ็อบเจ็กต์ประเภท A จากนั้นฟังก์ชัน display() จะถูกเรียก ดังแสดงด้านล่าง
A obj(3,8); obj.display();