ใน C++ เราสามารถโอเวอร์โหลดฟังก์ชันได้ แต่บางครั้งการโอเวอร์โหลดไม่ได้ทำ ในส่วนนี้เราจะมาดูกันว่ากรณีใดบ้างที่เราไม่สามารถใช้งานฟังก์ชั่นมากเกินไปได้
-
เมื่อลายเซ็นของฟังก์ชันเหมือนกัน เฉพาะประเภทการส่งคืนเท่านั้นที่ต่างกัน เราจึงไม่สามารถโอเวอร์โหลดฟังก์ชันได้
int my_func() {
return 5;
}
char my_func() {
return 'd';
} -
เมื่อฟังก์ชันของสมาชิกมีชื่อและรายการพารามิเตอร์เหมือนกันในคลาส จะไม่สามารถโอเวอร์โหลดได้
class My_Class{
static void func(int x) {
//Something
}
void func(int x) {
//something
}
}; -
เมื่อการประกาศพารามิเตอร์ที่ต่างกันเพียงตัวชี้ * และอาร์เรย์ [] จะเหมือนกัน
int my_func(int *arr) {
//Do something
}
int my_func(int arr[]) {
//do something
} -
เมื่อการประกาศพารามิเตอร์ ที่ต่างกันก็ต่อเมื่อมี qualifier คงที่หรือผันผวนเท่านั้น
int my_func(int x) {
//Do something
}
int my_func(const int x) {
//do something
} -
เมื่อการประกาศพารามิเตอร์ ที่ต่างกันในอาร์กิวเมนต์เริ่มต้นจะเทียบเท่ากัน
int my_func(int a, int b) {
//Do something
}
int my_func(int a, int b = 50) {
//do something
}