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

C++での関数のオーバーロードとconstキーワード


C ++では、関数をオーバーロードできます。一部の機能は通常の機能です。一部は定数型関数です。定数関数と通常の関数について理解するために、1つのプログラムとその出力を見てみましょう。

#include <iostream>
using namespace std;
class my_class {
   public:
      void my_func() const {
         cout << "Calling the constant function" << endl;
      }
      void my_func() {
         cout << "Calling the normal function" << endl;
      }
};
int main() {
   my_class obj;
   const my_class obj_c;
   obj.my_func();
   obj_c.my_func();
}

出力

Calling the normal function
Calling the constant function

ここでは、オブジェクトが正常なときに通常の関数が呼び出されていることがわかります。オブジェクトが定数の場合、定数関数が呼び出されます。

2つのオーバーロードされたメソッドにパラメーターが含まれ、1つのパラメーターが正常で、もう1つが一定の場合、エラーが発生します。

#include <iostream>
using namespace std;
class my_class {
   public:
      void my_func(const int x) {
         cout << "Calling the function with constant x" << endl;
      }
      void my_func(int x){
         cout << "Calling the function with x" << endl;
      }
};
int main() {
   my_class obj;
   obj.my_func(10);
}

出力

[Error] 'void my_class::my_func(int)' cannot be overloaded
[Error] with 'void my_class::my_func(int)'

ただし、引数が参照型またはポインタ型の場合、エラーは発生しません。

#include <iostream>
using namespace std;
class my_class {
   public:
      void my_func(const int *x) {
         cout << "Calling the function with constant x" << endl;
      }
      void my_func(int *x) {
         cout << "Calling the function with x" << endl;
      }
};
int main() {
   my_class obj;
   int x = 10;
   obj.my_func(&x);
}

出力

Calling the function with x

  1. PHPでの関数のオーバーロードとオーバーライド

    PHPでの関数のオーバーロード 関数のオーバーロードは、引数として受け入れる入力パラメーターのタイプが互いに異なる、類似した名前の複数のメソッドを作成できるようにする機能です。 例 関数のオーバーロードを実装する例を見てみましょう- <?php    class Shape {       const PI = 3.142 ;       function __call($name,$arg){          if($name == 'area

  2. C#での読み取り専用キーワードとconstキーワードの違い

    読み取り専用キーワード readonlyキーワードは、宣言中またはコンストラクターで宣言後に1回割り当てることができる変数を定義するために使用されます。 constキーワードは、プログラムで使用される定数を定義するために使用されます。以下は、C#での読み取り専用キーワードとconstキーワードの有効な使用法です。 例 using System.IO; using System; public class Program {    public const int VALUE = 10;    public readonly int value1;