C ++
 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;
}
  • 2つの関数がまったく同じであるが、デフォルトの引数のみが異なる場合、つまり、関数の1つにデフォルトの引数が含まれている場合、それらは同じと見なされます。つまり、オーバーロードできないため、コンパイラは同じ関数の再宣言のエラーをスローします。

#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;
}

  1. C++でオーバーロードできない関数

    C ++では、関数をオーバーロードできます。ただし、オーバーロードが行われない場合もあります。このセクションでは、関数をオーバーロードできないさまざまなケースについて説明します。 関数のシグネチャが同じである場合、戻り値のタイプのみが異なるため、関数をオーバーロードすることはできません。 int my_func() {    return 5; } char my_func() {    return 'd'; } メンバー関数がクラス内で同じ名前と同じパラメーターリストを持っている場合、それらをオーバーロードすることはで

  2. C++でオーバーロードできない演算子

    などの一部の演算子をオーバーロードできます。ただし、initの演算子をオーバーロードすることはできません。一部の演算子はオーバーロードできません。これらの演算子は次のようなものです ? 「。」メンバーアクセスまたはドット演算子 ? 「? :”三項演算子または条件演算子 ? 「::」スコープ解決演算子 ? 「。*」メンバー演算子へのポインタ ? 「sizeof」オブジェクトサイズ演算子 ? 「typeid」オブジェクト型演算子 これらの演算子は、オーバーロードすると深刻なプログラミングの問題が発生するため、オーバーロードできません。 たとえば、sizeof演算子は、オブジェクトまたはデー