ใน 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 }