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; }
-
C++でオーバーロードできない関数
C ++では、関数をオーバーロードできます。ただし、オーバーロードが行われない場合もあります。このセクションでは、関数をオーバーロードできないさまざまなケースについて説明します。 関数のシグネチャが同じである場合、戻り値のタイプのみが異なるため、関数をオーバーロードすることはできません。 int my_func() { return 5; } char my_func() { return 'd'; } メンバー関数がクラス内で同じ名前と同じパラメーターリストを持っている場合、それらをオーバーロードすることはで
-
C++でオーバーロードできない演算子
などの一部の演算子をオーバーロードできます。ただし、initの演算子をオーバーロードすることはできません。一部の演算子はオーバーロードできません。これらの演算子は次のようなものです ? 「。」メンバーアクセスまたはドット演算子 ? 「? :”三項演算子または条件演算子 ? 「::」スコープ解決演算子 ? 「。*」メンバー演算子へのポインタ ? 「sizeof」オブジェクトサイズ演算子 ? 「typeid」オブジェクト型演算子 これらの演算子は、オーバーロードすると深刻なプログラミングの問題が発生するため、オーバーロードできません。 たとえば、sizeof演算子は、オブジェクトまたはデー