Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ฟังก์ชันที่ไม่สามารถโอเวอร์โหลดได้ใน C++


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