C++ コンストラクター:柔軟なオブジェクト作成のためのデフォルト引数の使用
コンストラクターはクラス内の特別なメンバー関数であり、オブジェクトの作成時に自動的に呼び出されます。これらは、値またはデフォルト設定でオブジェクトを初期化するために使用されます。
一方、C++ のデフォルト引数では、関数またはコンストラクターのパラメーターのデフォルト値を指定できます。
デフォルトの引数を持つコンストラクター
デフォルト引数を持つコンストラクターは、オプションのパラメーターを使用してオブジェクトを作成できるようにするコンストラクターです。パラメータのデフォルト値が提供される場所。ユーザーが値を渡さない場合は、デフォルト値が使用されます。
構文
デフォルト引数を使用したコンストラクターの構文は次のとおりです。
class ClassName {
public:
ClassName(parameter_Type parameter_Name = default_Value,
parameter_Type2 parameter_Name2 = default_Value2);
};
- ここでは、コンストラクターはクラスと同じ名前を持っています
- 1 つ以上のパラメータにはデフォルト値が指定されています。
- ユーザーから値が渡されない場合は、このデフォルト値が使用されます。
デフォルトの引数を持つコンストラクターの例
以下は、デフォルト引数を使用したコンストラクターの例です。
#include <iostream>
using namespace std;
// Function with a default argument
void printMessage(string message = "Hello, Tutorialspoint Learner") {
cout << message << endl;
}
int main() {
// Calling the function without an argument
printMessage(); // Prints the default message: "Hello, World!"
// Calling the function with a custom argument
printMessage("Hi, there!"); // Prints the custom message: "Hi, there!"
return 0;
}
出力
Hello, Tutorialspoint Learner Hi, there!
説明
- 関数 printMessage() が作成され、デフォルト値「Hello, Tutorialspoint Learner」のパラメータが与えられます。
- main() のprintMessage() 関数は引数なしで呼び出されるため、デフォルトの引数「Hello, Tutorialspoint Learner」が使用されます。
- 一方、 printMessage("こんにちは!") では、値「Hi, there!」を明示的に渡しました。したがって、これはデフォルトの引数をオーバーライドします。
複数のデフォルト引数を持つコンストラクター
複数のデフォルト引数を持つコンストラクターを使用すると、ユーザーは複数のパラメーターのデフォルト値を指定することができます。これにより、柔軟性が高まり、引数の任意の組み合わせを渡すことができるようになります。
例
以下は、複数のデフォルト引数を持つコンストラクターの例です。
#include <iostream>
using namespace std;
class Box {
public:
int length, width, height;
// Constructor with multiple default arguments
Box(int l = 5, int w = 10, int h = 2) { // Default values for length, width, and height
length = l;
width = w;
height = h;
}
void display() {
cout << "Length: " << length << ", Width: " << width << ", Height: " << height << endl;
}
};
int main() {
// Creating objects with different numbers of arguments
Box box1;
Box box2(15);
Box box3(15, 20);
Box box4(15, 20, 25);
// Displaying the objects' values
box1.display();
box2.display();
box3.display();
box4.display();
return 0;
}
出力
Length: 5, Width: 10, Height: 2 Length: 15, Width: 10, Height: 2 Length: 15, Width: 20, Height: 2 Length: 15, Width: 20, Height: 25
説明
- まず、クラス ボックスは、長さと幅という 3 つのパブリック メンバー変数で定義されます。コンストラクターは Box(int l =5, int w =10, int h =2)です。 3 つのパラメータすべてにデフォルトの引数があります。
- オブジェクト ボックス box1; 内 引数が指定されていないため、デフォルトのコンストラクタがデフォルト値で呼び出され、「長さ:5、幅:10、高さ:2」になります。
- ボックス内 box2(15); 長さは 15 として指定されますが、幅と高さは指定されていないため、それぞれデフォルト値が使用されます。
- ボックス box3(15, 20); 長さと幅にはそれぞれ 15 と 20 の値が指定されているため、デフォルト値がオーバーライドされ、それに応じた結果が得られます。
デフォルト引数を持つコンストラクターの主な機能
これは通常の関数に似ていますが、オブジェクトの作成時に柔軟性と利便性が向上します。
以下では、そのすべての主要な機能について説明します。
1.パラメータのデフォルト値とオブジェクト作成の柔軟性
ここで、コンストラクターは 1 つ以上のパラメーターのデフォルト値を持つことができ、呼び出し側で引数が提供されない場合に使用でき、複数の方法でオブジェクトを作成できます。
2.複数のコンストラクターのオーバーロードを回避する
引数の組み合わせごとにコンストラクターをロードする必要がある場合があり、コードが大きくなりますが、デフォルトの引数を使用すると、コンストラクターを一度記述するだけで、さまざまなケースが自動的に処理されます。
3.デフォルトの引数の順序
複数のデフォルト値パラメータの場合、右側からデフォルト値を指定し始めると、中央のデフォルト引数をスキップすることはできません。
構文
Box(int l = 1, int w); // Invalid: 'w' has no default, but 'l' does.
4.デフォルトの引数は Const メンバーとともに使用できます
クラスに const メンバーがある場合は、初期化を容易にするためにコンストラクターでデフォルトの引数を指定できます。
構文
class Box {
public:
const int length, width;
Box(int l = 5, int w = 10) : length(l), width(w) {}
};
このコンストラクターは、デフォルトの引数 (長さ =5 および幅 =10) を使用して const メンバーを初期化します。
C言語