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

ตัวสร้างใน C++


ตัวสร้างเป็นฟังก์ชันของคลาสที่ดำเนินการเมื่อมีการสร้างวัตถุใหม่ของคลาส ตัวสร้างมีชื่อเดียวกับคลาสและไม่มีประเภทส่งคืน แม้แต่เป็นโมฆะ มีประโยชน์หลักในการจัดเตรียมค่าเริ่มต้นสำหรับตัวแปรของคลาส

คอนสตรัคเตอร์สองประเภทหลักคือคอนสตรัคเตอร์เริ่มต้นและคอนสตรัคเตอร์แบบกำหนดพารามิเตอร์ โดยมีรายละเอียดดังนี้

ตัวสร้างเริ่มต้น

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