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演算子は、オブジェクトまたはデー