C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

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
}

  1. 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

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

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