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

การมอบหมายคอนสตรัคเตอร์ใน C ++


ที่นี่เราจะดูว่าการมอบหมายคอนสตรัคคืออะไร? เมื่อ Constructor เรียก Constructor อื่นในคลาสเดียวกัน จะถูกเรียกว่า Constructor Delegation คุณลักษณะนี้มีอยู่ใน C++11

ให้เราดูโปรแกรมต่อไปนี้ และลองวิเคราะห์ว่าโค้ดนี้มีปัญหาอะไรบ้าง

ตัวอย่าง

#include <iostream>
using namespace std;
class MyClass {
   int a, b, c;
   public:
   MyClass(){
      a = b = c = 0;
   }
   MyClass(int c) {
      // Initializing a and b are redundent, only c initialization is needed here
      a = 0;
      b = 0;
      this->c = c;
   }
   void display(){
      cout << "a : " << a << ", b : " << b << ", c : " << c;
   }
};
main() {
   MyClass my_obj(5);
   my_obj.display();
}

ผลลัพธ์

a : 0, b : 0, c : 5

ที่นี่เราจะเห็นว่ารหัสทำงานได้ดี แต่มีรหัสซ้ำซ้อนอยู่บ้าง คอนสตรัคเตอร์ที่ไม่มีพารามิเตอร์สามารถตั้งค่าของ a และ b เป็น 1 ได้ ดังนั้นหากเราใช้คอนสตรัคเตอร์ตัวแรกในคอนสตรัคเตอร์ตัวที่สอง มันจะมีประสิทธิภาพมากขึ้น ด้วยเหตุนี้ เราจึงต้องใช้วิธีที่เรียกว่า Constructor delegation

ตัวอย่าง

#include <iostream>
using namespace std;
class MyClass {
   int a, b, c;
   public:
   MyClass(){
      a = b = c = 0;
   }
   MyClass(int c) : MyClass(){ //using constructor delegation
      this->c = c;
   }
   void display(){
      cout << "a : " << a << ", b : " << b << ", c : " << c;
   }
};
main() {
   MyClass my_obj(5);
   my_obj.display();
}

ผลลัพธ์

a : 0, b : 0, c : 5