Constructor Overloading คืออะไรใน C ++ : ลักษณะและประเภท

เผยแพร่แล้ว: 2021-05-24

C ++ เป็นภาษาการเขียนโปรแกรมเชิงวัตถุที่ใช้กันทั่วไปในอุตสาหกรรม C++ เป็นภาษาโปรแกรมผู้บุกเบิกใน OOP พัฒนาโดย Bjarne Stroustrup ที่ AT & T Bell Laboratories ในปี 1979 คุณลักษณะที่ใช้บ่อยที่สุดของ c++ คือการสร้างคลาสในนั้น ภายในคลาส เราสามารถสร้าง class สมาชิก –methods และ variables

สารบัญ

บทนำ

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

ใน C++ ตัวสร้างเริ่มต้นจะไม่มีพารามิเตอร์ มีการสร้างอินสแตนซ์จากสมาชิกของอ็อบเจ็กต์ด้วยค่าเริ่มต้นที่สอดคล้องกัน

คุณสามารถมีแนวคิดที่ยุติธรรมเกี่ยวกับแนวคิดการ โอเวอร์โหลด ที่ใช้ในการเขียนโปรแกรมเชิงวัตถุ

ตัวสร้าง

คอนสตรัคเตอร์ (ctor) เป็นเทคนิคการเขียนโปรแกรมที่ใช้ในการสร้างอ็อบเจ็กต์ในการเขียนโปรแกรมเชิงวัตถุแบบคลาส อ็อบเจ็กต์ใหม่ถูกสร้างขึ้นโดยการเรียกรูทีนย่อยวัตถุประสงค์พิเศษ เป็นฟังก์ชันสมาชิกของคลาสที่ ในทางกลับกัน เริ่มต้นวัตถุของคลาส วิธีนี้ยอมรับอาร์กิวเมนต์ พารามิเตอร์ที่ให้มาถูกใช้โดยตัวสร้างฐานและตัวแปรชุดสมาชิก

ลักษณะของคอนสตรัคเตอร์

ตัวสร้างเป็นฟังก์ชันสมาชิกพิเศษของคลาส แตกต่างจากฟังก์ชันสมาชิกทั่วไปด้วยเหตุผลดังต่อไปนี้:

  • สมาชิกคอนสตรัคเตอร์อยู่ในขอบเขตสาธารณะ
  • มีชื่อเดียวกับประกาศคลาส
  • ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
  • ตัวสร้างไม่มีประเภทส่งคืน
  • คอนสตรัคเตอร์เริ่มต้นถูกสร้างขึ้นโดยปริยาย
  • เมื่อสร้างวัตถุ ตัวสร้างจะถูกเรียกโดยอัตโนมัติ
  • คอนสตรัคเตอร์ไม่ได้รับการสืบทอดโดยปริยาย
  • มักจะมีกฎที่แตกต่างกันสำหรับตัวแก้ไขขอบเขต

ประเภทของตัวสร้าง

ตัว สร้างเริ่มต้น – ตัวสร้างที่มีพารามิเตอร์เป็นศูนย์และไม่มีอาร์กิวเมนต์ เป็นคอนสตรัคเตอร์โดยนัยที่สร้างโดยคอมไพเลอร์

Parameterized Constructors คือสิ่งที่คุณสามารถส่งผ่านอาร์กิวเมนต์ได้ อาร์กิวเมนต์เริ่มต้นวัตถุที่สร้างขึ้น สร้างคอนสตรัคเตอร์แบบกำหนดพารามิเตอร์ได้ง่ายๆ โดยการเพิ่มพารามิเตอร์เข้าไป เช่นเดียวกับที่เราทำกับฟังก์ชันอื่นๆ ใช้พารามิเตอร์ในเนื้อหาของตัวสร้างเพื่อเริ่มต้นวัตถุ คอนสตรัคเตอร์ประเภทนี้มักใช้สำหรับการโอเวอร์โหลดและสำหรับการเริ่มต้นองค์ประกอบข้อมูลต่างๆ ของออบเจกต์ด้วยค่าเริ่มต้นที่แตกต่างกัน

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

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

ใน c++ คอนสตรัคเตอร์จะถูกเรียกโดยอัตโนมัติเมื่ออ็อบเจกต์ (นั่นคือ อินสแตนซ์ของคลาส) สร้างขึ้นมา

หากเราไม่ระบุคอนสตรัคเตอร์ คอมไพเลอร์ c++ จะสร้างคอนสตรัคเตอร์เริ่มต้นสำหรับเรา (ไม่คาดหวังพารามิเตอร์ใด ๆ และมีชื่อคลาส)

ตัวสร้างที่เขียนอย่างถูกต้องจะปล่อยให้วัตถุที่เป็นผลลัพธ์อยู่ในสถานะที่ถูกต้อง

ตัวสร้างโอเวอร์โหลด

คอนสตรัคเตอร์โอเวอร์โหลดเป็นปรากฏการณ์ของคอนสตรัคเตอร์โอเวอร์โหลดตัวสร้างอื่น

ตัวสร้างที่กำหนดสามารถโอเวอร์โหลดได้ คล้ายกับฟังก์ชั่นโอเวอร์โหลด

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

ความพร้อมใช้งานของคอนสตรัคเตอร์หลายตัวที่มีพารามิเตอร์ต่างกันช่วยในการทำงานที่แตกต่างกันในการเขียนโปรแกรม

ตัวสร้างโอเวอร์โหลดใน C ++

ใน c ++ มีคอนสตรัคเตอร์หลายตัวในคลาสภายใต้ชื่อเดียวกัน แต่มีรายการอาร์กิวเมนต์ต่างกัน แนวคิดของ การโอเวอร์โหลดคอนสตรัคเตอร์ใน c ++ นี้ค่อนข้างคล้ายกับฟังก์ชันโอเวอร์โหลด

โดยปกติ คุณควรสร้างคอนสตรัคเตอร์มากกว่าหนึ่งตัวในคลาสเพื่อเริ่มต้นตัวแปรสมาชิกที่แตกต่างกันสำหรับอ็อบเจ็กต์ เกณฑ์ในการปฏิบัติตัวของคอนสตรัคเตอร์ต่างกันคือการมีจำนวนพารามิเตอร์หรือตำแหน่งที่แตกต่างกันหรือประเภทข้อมูลที่แตกต่างกันสำหรับพารามิเตอร์

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

Constructor Overloading ทำงานอย่างไรใน C ++

ลองพิจารณาตัวอย่างที่แสดงด้านล่าง:

โค้ดแสดงตัวอย่าง คอนสตรัค เตอร์ โอเวอร์โหลดใน c++

มี 2 ​​คอนสตรัคเตอร์ของคลาส "คำนวณ":

  1. ตัวสร้างเริ่มต้น (ไม่มีพารามิเตอร์ใด ๆ )
  2. ตัวสร้างที่มีสามพารามิเตอร์

และใน main() มีสองอ็อบเจ็กต์ที่สร้างขึ้น

1. ออก:

เมื่อถูกสร้างขึ้น มันจะเรียกใช้ตัวสร้างเริ่มต้นโดยอัตโนมัติโดยไม่มีพารามิเตอร์ เนื่องจากในขณะที่สร้างอ็อบเจ็กต์ จะไม่มีพารามิเตอร์ที่ส่งผ่าน ดังนั้นจึงตรงกับคำจำกัดความของ first (Default Constructor) สิ่งนี้จะกำหนดค่า 0 ให้กับตัวแปรทั้งสามสำหรับวัตถุของคลาสหลัก

2. ออก2:

เมื่อถูกสร้างขึ้น มันจะเรียกใช้ตัวสร้างโดยอัตโนมัติด้วยพารามิเตอร์ 3 ตัว เนื่องจากในขณะที่สร้างอ็อบเจ็กต์ จะมีการส่งพารามิเตอร์เพียง 1 รายการเท่านั้น ดังนั้นจึงตรงกับคำจำกัดความของตัวสร้างที่สอง สิ่งนี้จะกำหนดค่า 3 ค่า (ส่งผ่านเป็นพารามิเตอร์) ให้กับตัวแปรสำหรับวัตถุของคลาสหลัก

เรียนรู้ หลักสูตรวิศวกรรมซอฟต์แวร์ออนไลน์ จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม PG สำหรับผู้บริหาร โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว

บทสรุป

การทำความเข้าใจแนวคิดการเขียนโปรแกรมสำหรับ การโอเวอร์โหลดคอนสตรัคเตอร์ใน c ++ เป็นทักษะที่สำคัญสำหรับโปรแกรมเมอร์และนักออกแบบระบบ นักเรียนที่อยู่ในกระแส คอมพิวเตอร์ และโปรแกรมที่เกี่ยวข้องกับคอมพิวเตอร์สามารถพัฒนาทักษะและความน่าเชื่อถือทางเทคนิคได้ เช่น แนวคิด OOP และการเพิ่มประสิทธิภาพโค้ด แหล่งข้อมูลและฐานความรู้ที่ พอร์ทัล upGrad สนับสนุนให้ผู้เชี่ยวชาญดังกล่าวได้รับความเชี่ยวชาญด้านการเขียนโปรแกรมเพื่อแข่งขันในตลาดอุตสาหกรรม นอกจากนี้ คุณจะได้รับโอกาสในการสำรวจเครือข่ายมืออาชีพและการพัฒนาทักษะ

หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับการพัฒนาซอฟต์แวร์ฟูลสแตก โปรดดูโปรแกรม Executive PG ของ upGrad & IIIT-B ในการพัฒนาซอฟต์แวร์ฟูลสแตก ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีการฝึกอบรมที่เข้มงวดมากกว่า 500 ชั่วโมง โครงการมากกว่า 9 โครงการ และ การมอบหมายงาน สถานะศิษย์เก่า IIIT-B โครงการหลักที่นำไปปฏิบัติจริง และความช่วยเหลือด้านงานกับบริษัทชั้นนำ

คอนสตรัคเตอร์ในการเขียนโปรแกรมคืออะไร?

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

คอนสตรัคเตอร์โอเวอร์โหลดคืออะไร?

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

วิธีการเริ่มต้นวัตถุโดยใช้ตัวสร้าง?

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