ฟังก์ชั่นแทนที่ใน C ++ อธิบาย

เผยแพร่แล้ว: 2022-11-09

สารบัญ

ฟังก์ชั่นคืออะไร?

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

ไวยากรณ์ของฟังก์ชัน C++:-

return_type function_name (รายการพารามิเตอร์) {

ฟังก์ชั่นร่างกาย

}

ส่วนประกอบ :-

  • Return Type- หมายถึงประเภทค่าตอบแทนของฟังก์ชัน
  • ชื่อฟังก์ชัน- หมายถึงชื่อของฟังก์ชันซึ่งประกอบขึ้นเป็นฟังก์ชันลายเซ็นและรายการพารามิเตอร์
  • พารามิเตอร์ - นี่คือตัวยึดตำแหน่งสำหรับค่าที่ฟังก์ชันส่งคืน เมื่อเรียกใช้ฟังก์ชัน ค่าที่ส่งไปยังพารามิเตอร์จะเรียกว่าพารามิเตอร์จริง
  • ตัว ฟังก์ชัน- เนื้อหาฟังก์ชันประกอบด้วยรายการคำสั่งที่กำหนดงานของฟังก์ชัน

วิธีเรียกใช้ฟังก์ชัน

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

  • โทรตามค่า
  • โทรโดยอ้างอิง
  • โทรโดยตัวชี้

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

การแทนที่ฟังก์ชันใน C++

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

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

ไวยากรณ์เพื่อใช้งานการแทนที่ฟังก์ชันใน C ++

เมื่อฟังก์ชันเดียวกันที่กำหนดไว้ทั้งในคลาสพื้นฐานและคลาสที่ได้รับถูกเรียกโดยใช้อ็อบเจ็กต์จากคลาสที่ได้รับ มันจะเรียกใช้ฟังก์ชันคลาสที่ได้รับ นี่คือฟังก์ชันที่แทนที่ใน C ++

ด้านล่างเป็นไวยากรณ์ที่ใช้มากที่สุดสำหรับการใช้งานฟังก์ชันที่แทนที่ใน C ++:

// โปรแกรม C++ สำหรับสาธิตฟังก์ชันแทนที่

#include <iostream>

ใช้เนมสเปซ std;

ฐานคลาส {

สาธารณะ:

โมฆะพิมพ์ () {

ศาล << "ฟังก์ชันพื้นฐาน" << endl;

}

};

คลาสที่ได้รับ: ฐานสาธารณะ {

สาธารณะ:

โมฆะพิมพ์ () {

cout << "ฟังก์ชันที่ได้รับ" << endl;

}

};

int หลัก () {

ที่ได้รับมา1;

ที่ได้รับ 1.print();

กลับ 0;

}

เอาท์พุต

ฟังก์ชันที่ได้รับ

สิ่งนี้กำหนดฟังก์ชันคลาสฐานใหม่ภายในคลาสที่ได้รับ ดังนั้น return-type, function_parameters และ function_name จะต้องเหมือนกันสำหรับการบรรลุการแทนที่ฟังก์ชัน

หลักสูตรและบทความยอดนิยมเกี่ยวกับวิศวกรรมซอฟต์แวร์

โปรแกรมยอดนิยม
หลักสูตร Executive PG ในการพัฒนาซอฟต์แวร์ - IIIT B โปรแกรมใบรับรองบล็อคเชน - PURDUE โปรแกรมใบรับรองความปลอดภัยทางไซเบอร์ - PURDUE MSC ในวิทยาการคอมพิวเตอร์ - IIIT B
บทความยอดนิยมอื่น ๆ
Cloud Engineer เงินเดือนในสหรัฐอเมริกา 2021-22 เงินเดือนสถาปนิกโซลูชัน AWS ในสหรัฐอเมริกา เงินเดือนนักพัฒนาแบ็กเอนด์ในสหรัฐอเมริกา Front End Developer เงินเดือนในสหรัฐอเมริกา
นักพัฒนาเว็บ เงินเดือนในสหรัฐอเมริกา คำถามสัมภาษณ์ Scrum Master ในปี 2022 จะเริ่มอาชีพใน Cyber ​​​​Security ในปี 2022 ได้อย่างไร? ตัวเลือกอาชีพในสหรัฐอเมริกาสำหรับนักศึกษาวิศวกรรม

การแทนที่ฟังก์ชันทำงานอย่างไรใน C++

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

ด้านล่างเป็นตัวอย่างง่ายๆ ของการแทนที่ฟังก์ชันใน C++ เพื่อความเข้าใจที่ดีขึ้นของคุณ:

#include <iostream>

ใช้เนมสเปซ std;

คลาส parent_class

{

สาธารณะ:

พิมพ์โมฆะเสมือน ()

{

cout << “\nนี่คือวิธีพิมพ์ ()”

” ของ BaseClass”;

}

};

คลาสที่ได้รับ_class : parent_class สาธารณะ

{

สาธารณะ:

// Function Overriding – นิยามใหม่ของ

// วิธีการพิมพ์ของคลาสฐาน

พิมพ์เป็นโมฆะ ()

{

cout << “\nนี่คือวิธีพิมพ์ ()”

” ของคลาสที่ได้รับ”;

}

};

// รหัสไดรเวอร์

int หลัก ()

{

ที่ได้รับ_คลาส obj;

obj.print();

}

เข้าถึงฟังก์ชันที่ถูกแทนที่ใน C ++

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

// โปรแกรม C ++ เพื่อเข้าถึงฟังก์ชันที่ถูกแทนที่

// ใน main() โดยใช้ตัวดำเนินการแก้ไขขอบเขต ::

#include <iostream>

ใช้เนมสเปซ std;

ฐานคลาส {

สาธารณะ:

โมฆะพิมพ์ () {

ศาล << "ฟังก์ชันพื้นฐาน" << endl;

}

};

คลาสที่ได้รับ: ฐานสาธารณะ {

สาธารณะ:

โมฆะพิมพ์ () {

cout << "ฟังก์ชันที่ได้รับ" << endl;

}

};

int หลัก () {

ได้รับมา1, ที่ได้รับ2;

ที่ได้รับ 1.print();

// เข้าถึงฟังก์ชัน print() ของคลาสฐาน

ที่ได้รับ2.Base::print();

กลับ 0;

}

เอาท์พุต

ฟังก์ชันที่ได้รับ

ฟังก์ชันพื้นฐาน

คำสั่งในไวยากรณ์; ที่ได้รับ2.Base::print(); ให้การเข้าถึงฟังก์ชัน print() ของคลาส Base

เรียกใช้ฟังก์ชันแทนที่จากคลาสที่ได้รับ

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

ด้านล่างนี้เป็นตัวอย่างของการใช้ฟังก์ชันแทนที่การเรียกจากคลาสที่ได้รับ

// โปรแกรม C++ เพื่อเรียกใช้ฟังก์ชันแทนที่

// จากฟังก์ชันสมาชิกของคลาสที่ได้รับ

#include <iostream>

ใช้เนมสเปซ std;

ฐานคลาส {

สาธารณะ:

โมฆะพิมพ์ () {

ศาล << "ฟังก์ชันพื้นฐาน" << endl;

}

};

คลาสที่ได้รับ: ฐานสาธารณะ {

สาธารณะ:

โมฆะพิมพ์ () {

cout << "ฟังก์ชันที่ได้รับ" << endl;

// เรียกใช้ฟังก์ชันแทนที่

ฐาน::พิมพ์();

}

};

int หลัก () {

ที่ได้รับมา1;

ที่ได้รับ 1.print();

กลับ 0;

}

เอาท์พุต

ฟังก์ชันที่ได้รับ

ฟังก์ชันพื้นฐาน

ในโปรแกรมนี้ ฟังก์ชันที่ถูกแทนที่ถูกเรียกภายในคลาส Derived

คลาสที่ได้รับ: ฐานสาธารณะ {

สาธารณะ:

โมฆะพิมพ์ () {

cout << "ฟังก์ชันที่ได้รับ" << endl;

ฐาน::พิมพ์();

}

};

รหัส Base::print(); เรียกใช้ฟังก์ชันแทนที่ภายในคลาส Derived

ฟังก์ชันโอเวอร์โหลด vs. ฟังก์ชันโอเวอร์ไรด์

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

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

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

บทสรุป

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

หากคุณต้องการเข้าร่วมหลักสูตรระดับพรีเมียมที่น่าเชื่อถือเพื่อเริ่มต้นอาชีพของคุณในสาขานี้ คุณสามารถลงทะเบียนสำหรับ วิทยาศาสตรมหาบัณฑิตสาขาวิทยาการคอมพิวเตอร์ ของ upGrad ได้ที่ upGrad ไฮไลท์สำคัญบางส่วนของโปรแกรมนี้มีดังนี้:-

  • เรียนรู้ MERN Stack, Microservices, JavaScript เป็นต้น
  • การเรียนรู้ที่เป็นประโยชน์บน Cloud Labs
  • ทดลองกับเครื่องมือที่ใช้ใน Netflix, LinkedIn, Facebook ฯลฯ
  • รับทักษะในเครื่องมือการเขียนโปรแกรมและภาษามากกว่า 10 ภาษา
  • การสนับสนุนนักเรียนตลอด 24 ชั่วโมงทุกวัน

การแทนที่ฟังก์ชันเกิดขึ้นได้อย่างไร

ฟังก์ชันการแทนที่ C++ เกิดขึ้นผ่านการสืบทอด เช่น เมื่อคลาสหนึ่งสืบทอดคลาสอื่น เมื่อคลาสที่ได้รับและคลาสฐานมีฟังก์ชันของสมาชิกที่มีประเภทส่งคืน ชื่อ และรายการอาร์กิวเมนต์เหมือนกัน จะเรียกว่าฟังก์ชันแทนที่

อะไรคือความแตกต่างระหว่างการโอเวอร์โหลดฟังก์ชันและการแทนที่ฟังก์ชันใน C ++?

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

คุณสมบัติของฟังก์ชั่นโอเวอร์โหลดใน C ++ คืออะไร?

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