ตัวสร้างเป็นฟังก์ชันของคลาสที่ดำเนินการเมื่อมีการสร้างวัตถุใหม่ของคลาส ตัวสร้างมีชื่อเดียวกับคลาสและไม่มีประเภทส่งคืน แม้แต่เป็นโมฆะ มีประโยชน์หลักในการจัดเตรียมค่าเริ่มต้นสำหรับตัวแปรของคลาส
คอนสตรัคเตอร์สองประเภทหลักคือคอนสตรัคเตอร์เริ่มต้นและคอนสตรัคเตอร์แบบกำหนดพารามิเตอร์ โดยมีรายละเอียดดังนี้
ตัวสร้างเริ่มต้น
ตัวสร้างเริ่มต้นไม่ใช้พารามิเตอร์ใด ๆ หากโปรแกรมเมอร์ไม่ได้จัดเตรียมคอนสตรัคเตอร์เริ่มต้นไว้อย่างชัดเจน คอมไพเลอร์จะจัดเตรียมคอนสตรัคเตอร์เริ่มต้นโดยปริยาย ในกรณีนั้น ค่าดีฟอลต์ของตัวแปรจะเป็น 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();