คุณสามารถมีคำจำกัดความได้หลายแบบสำหรับชื่อฟังก์ชันเดียวกันในขอบเขตเดียวกัน คำจำกัดความของฟังก์ชันต้องแตกต่างกันตามประเภทและ/หรือจำนวนอาร์กิวเมนต์ในรายการอาร์กิวเมนต์ คุณไม่สามารถโอเวอร์โหลดการประกาศฟังก์ชันที่แตกต่างกันตามประเภทการส่งคืนเท่านั้น
ฟังก์ชันโอเวอร์โหลดนั้นเป็นพื้นฐานของเวลาคอมไพล์พหุสัณฐาน จะตรวจสอบลายเซ็นฟังก์ชัน หากลายเซ็นไม่เหมือนกันก็สามารถโอเวอร์โหลดได้ ชนิดส่งคืนของฟังก์ชันไม่สร้างผลกระทบใด ๆ ต่อการโอเวอร์โหลดฟังก์ชัน ลายเซ็นฟังก์ชันเดียวกันกับประเภทการส่งคืนที่แตกต่างกันจะไม่โอเวอร์โหลด
ต่อไปนี้เป็นตัวอย่างที่ใช้ฟังก์ชันเดียวกัน print() เพื่อพิมพ์ข้อมูลประเภทต่างๆ
โค้ดตัวอย่าง
#include <iostream>
using namespace std;
class printData {
public:
void print(int i) {
cout << "Printing int: " << i << endl;
}
void print(double f) {
cout << "Printing float: " << f << endl;
}
void print(char* c) {
cout << "Printing character: " << c << endl;
}
};
int main(void) {
printData pd;
pd.print(5); // Call print to print integer
pd.print(500.263); // Call print to print float
pd.print("Hello C++"); // Call print to print character
return 0;
} ผลลัพธ์
Printing int: 5 Printing float: 500.263 Printing character: Hello C++