ฟังก์ชั่นแทนที่ใน 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