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

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


ฟังก์ชั่นโอเวอร์โหลดเรียกอีกอย่างว่าวิธีการโอเวอร์โหลด ฟังก์ชันโอเวอร์โหลดเป็นคุณลักษณะที่มีให้โดยแนวคิดของพหุสัณฐานซึ่งใช้กันอย่างแพร่หลายในการเขียนโปรแกรมเชิงวัตถุ

เพื่อให้บรรลุฟังก์ชันโอเวอร์โหลด ฟังก์ชันควรเป็นไปตามเงื่อนไขเหล่านี้ -

  • ประเภทของฟังก์ชันที่ส่งคืนควรเหมือนกัน

  • ชื่อของฟังก์ชันควรเหมือนกัน

  • พารามิเตอร์อาจแตกต่างกันในประเภท แต่ควรเป็นตัวเลขเหมือนกัน

ตัวอย่าง

int display(int a); int display(float a); // both the functions can be overloaded
int display(int a); float display(float b); //both the functions can’t be overloaded as the return type of
one function is different from another

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

  • ฟังก์ชันที่มีชื่อต่างกันและจำนวนพารามิเตอร์ต่างกัน

ตัวอย่าง

#include<iostream>
using namespace std;
int max_two(int a, int b) //contains two parameters{
   if(a>b){
      return a;
   }
   else{
      return b;
   }
}
int max_three(int a, int b ,int c) //contains three parameters{
   if (a>b && a>c){
      return a;
   }
   else if(b>c){
      return b;
   }
   else{
      return c;
   }
}
int main(){
   max_two(a,b);
   return 0;
}
  • ฟังก์ชันชื่อเดียวกันแต่ประเภทการส่งคืนต่างกัน

ตัวอย่าง

#include<iostream>
using namespace std;
int max_two(int a, int b){
   if(a>b){
      return a;
   }
   else{
      return b;
   }
}
float max_two(int a, int b){
   if(a>b){
      return a;
   }
   else{
      return b;
   }
}
int main(){
   max_two(a, b);
   return 0;
}
  • ฟังก์ชันสมาชิกที่ตรงตามเงื่อนไขทั้งหมดของฟังก์ชันโอเวอร์โหลด แต่ถ้าเป็นฟังก์ชันสมาชิกแบบคงที่ จะไม่สามารถโอเวอร์โหลดได้

ตัวอย่าง

#include<iostream>
class check{
   static void test(int i)
   { }
   void test(int i)
   { }
};
int main(){
   check ch;
   return 0;
}
  • หากฟังก์ชันสองฟังก์ชันเหมือนกันทุกประการแต่แตกต่างกันในอาร์กิวเมนต์เริ่มต้นเท่านั้น กล่าวคือ หนึ่งในฟังก์ชันมีอาร์กิวเมนต์เริ่มต้น จะถือว่าฟังก์ชันเดียวกันเหมือนกัน ซึ่งหมายความว่าไม่สามารถโอเวอร์โหลดได้ ดังนั้นคอมไพเลอร์จะส่งข้อผิดพลาดในการประกาศฟังก์ชันเดียวกันอีกครั้ง

ตัวอย่าง

#include<iostream>
#include<stdio.h>
using namespace std;
int func_1 ( int a, int b){
   return a*b;
}
int func_1 ( int a, int b = 40){
   return a+b;
}
Int main(){
   func_1(10,20);
   return 0;
}