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
} -
パラメータ宣言が、定数または揮発性修飾子が存在する場合にのみ異なる場合。
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
} -
main()をC ++でオーバーロードできますか?
C ++では、関数のオーバーロードを使用できます。ここで、main()関数もオーバーロードできるかという疑問が浮かびます。 アイデアを得るために1つのプログラムを見てみましょう。 例 #include <iostream> using namespace std; int main(int x) { cout << "Value of x: " << x << "\n"; return 0; } int main(char *y) { &n
-
C++でオーバーロードできない演算子
などの一部の演算子をオーバーロードできます。ただし、initの演算子をオーバーロードすることはできません。一部の演算子はオーバーロードできません。これらの演算子は次のようなものです ? 「。」メンバーアクセスまたはドット演算子 ? 「? :”三項演算子または条件演算子 ? 「::」スコープ解決演算子 ? 「。*」メンバー演算子へのポインタ ? 「sizeof」オブジェクトサイズ演算子 ? 「typeid」オブジェクト型演算子 これらの演算子は、オーバーロードすると深刻なプログラミングの問題が発生するため、オーバーロードできません。 たとえば、sizeof演算子は、オブジェクトまたはデー