มีฟังก์ชันพิเศษดังกล่าวใน C++ เป็นฟังก์ชันที่มีชื่อเดียวกันกับชื่อคลาสในคลาสและไม่มีค่าส่งคืน ตราบใดที่เรากำหนดอ็อบเจ็กต์ของคลาส ระบบจะเรียกมันโดยอัตโนมัติเพื่อการเริ่มต้นแบบพิเศษ ของอ็อบเจ็กต์ ในกรณีส่วนใหญ่ เนื่องจากเราไม่ได้กำหนด คอนสตรัคเตอร์ ระบบจะสร้างฟอร์มเริ่มต้นและคอนสตรัคเตอร์ที่ซ่อนอยู่ตามค่าเริ่มต้น
ต่อไป เราจะสอนวิธีกำหนดคอนสตรัคเตอร์ของคุณเอง ผู้ใช้จำเป็นต้องกำหนดคอนสตรัคเตอร์อย่างน้อยหนึ่งรายการด้วยตัวเอง ระบบจะไม่สร้างมันขึ้นมาโดยอัตโนมัติอีกต่อไป แต่จะเลือกอันที่ตรงกันมากที่สุดเพื่อเรียกตามคอนสตรัคเตอร์ที่ผู้ใช้กำหนด .
ตัวอย่างเช่น ยังคงใช้คลาส Student เราเพิ่ม Constructor ด้วยพารามิเตอร์เริ่มต้น รหัสจะเป็นดังนี้:
#include<iostream>#include<Cstring>usingnamespacestd;classStudent{private:intnum;//ชื่อหมายเลขนักเรียน[100];//ชื่อ intscore;//score public:Student(intn,char*str,ints);intprint( );intSet(intn,char*str,ints);};Student::Student(intn,char*str,ints){num=n;strcpy(name,str);score=s;cout<<ตัวสร้าง<< endl;}intStudent::print(){cout<<num<<<<name<<<<score;return0;}intStudent::Set(intn,char*str,ints){num=n;strcpy(ชื่อ, str);คะแนน=s;}intmain(){StudentA(100,dotcpp,11);A.print();return0;}
นั่นคือ สามารถเรียกตัวสร้างได้ ในเวลาเดียวกันกับที่ถูกกำหนดไว้เพื่อให้ทราบถึงฟังก์ชันการเริ่มต้น การดำเนินการมีดังนี้:
ควรสังเกตว่าเนื่องจากเราได้กำหนดคอนสตรัคเตอร์ด้วยพารามิเตอร์เริ่มต้นในคลาส ระบบจะไม่สร้างมันโดยอัตโนมัติ ในเวลานี้ เราจำเป็นต้องส่งผ่านค่าเริ่มต้นสามค่าเมื่อกำหนดออบเจ็กต์ เนื่องจากคอนสตรัคเตอร์ สามารถโอเวอร์โหลดได้ ระบบจะค้นหาฟังก์ชันที่ตรงกันมากที่สุด แต่หากไม่ได้ถูกกำหนดให้เป็นคอนสตรัคเตอร์ที่มีพารามิเตอร์เริ่มต้น จะมีการรายงานข้อผิดพลาด โปรดทดลองด้วยตัวเอง