คุณสามารถมีคำจำกัดความได้หลายแบบสำหรับชื่อฟังก์ชันเดียวกันในขอบเขตเดียวกัน คำจำกัดความของฟังก์ชันต้องแตกต่างกันตามประเภทและ/หรือจำนวนอาร์กิวเมนต์ในรายการอาร์กิวเมนต์ คุณไม่สามารถโอเวอร์โหลดการประกาศฟังก์ชันที่แตกต่างกันตามประเภทการส่งคืนเท่านั้น
ฟังก์ชันโอเวอร์โหลดนั้นเป็นพื้นฐานของเวลาคอมไพล์พหุสัณฐาน จะตรวจสอบลายเซ็นฟังก์ชัน หากลายเซ็นไม่เหมือนกันก็สามารถโอเวอร์โหลดได้ ชนิดส่งคืนของฟังก์ชันไม่สร้างผลกระทบใด ๆ ต่อการโอเวอร์โหลดฟังก์ชัน ลายเซ็นฟังก์ชันเดียวกันกับประเภทการส่งคืนที่แตกต่างกันจะไม่โอเวอร์โหลด
ต่อไปนี้เป็นตัวอย่างที่ใช้ฟังก์ชันเดียวกัน 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++