C++ コンストラクター
C++ コンストラクタ
このチュートリアルでは、ヘルプの例を使用して C++ コンストラクターとその型について学習します。
コンストラクターは、オブジェクトの作成時に自動的に呼び出される特別なタイプのメンバー関数です。
C++ では、コンストラクターはクラスと同じ名前を持ち、戻り値の型はありません。たとえば、
class Wall {
public:
// create a constructor
Wall() {
// code
}
};
ここで、関数 Wall()
クラス Wall
のコンストラクタです .コンストラクタ
- クラスと同じ名前
- 戻り値の型がなく、かつ
- は
public
です
C++ デフォルト コンストラクタ
パラメータのないコンストラクタは、デフォルト コンストラクタと呼ばれます。 .上記の例では、Wall()
はデフォルトのコンストラクタです。
例 1:C++ のデフォルト コンストラクタ
// C++ program to demonstrate the use of default constructor
#include <iostream>
using namespace std;
// declare a class
class Wall {
private:
double length;
public:
// default constructor to initialize variable
Wall() {
length = 5.5;
cout << "Creating a wall." << endl;
cout << "Length = " << length << endl;
}
};
int main() {
Wall wall1;
return 0;
}
出力
Creating a Wall Length = 5.5
ここで、wall1 オブジェクトが作成され、Wall()
コンストラクターが呼び出されます。 長さを設定します オブジェクトの変数を 5.5
に .
注: クラスでコンストラクターを定義していない場合、C++ コンパイラーは、空のコードとパラメーターのないデフォルトのコンストラクターを自動的に作成します。
C++ パラメーター化コンストラクター
C++ では、パラメーターを持つコンストラクターは、パラメーター化されたコンストラクターと呼ばれます。これは、メンバー データを初期化するための推奨される方法です。
例 2:C++ パラメーター化コンストラクター
// C++ program to calculate the area of a wall
#include <iostream>
using namespace std;
// declare a class
class Wall {
private:
double length;
double height;
public:
// parameterized constructor to initialize variables
Wall(double len, double hgt) {
length = len;
height = hgt;
}
double calculateArea() {
return length * height;
}
};
int main() {
// create object and initialize data members
Wall wall1(10.5, 8.6);
Wall wall2(8.5, 6.3);
cout << "Area of Wall 1: " << wall1.calculateArea() << endl;
cout << "Area of Wall 2: " << wall2.calculateArea();
return 0;
}
出力
Area of Wall 1: 90.3 Area of Wall 2: 53.55
ここでは、パラメーター化されたコンストラクター Wall()
を作成しました。 2 つのパラメーターがあります:double len
と double hgt
.これらのパラメーターに含まれる値は、メンバー変数の初期化に使用されます length 高さ .
Wall
のオブジェクトを作成すると クラスでは、メンバー変数の値を引数として渡します。このコードは次のとおりです:
Wall wall1(10.5, 8.6);
Wall wall2(8.5, 6.3);
このようにメンバー変数が初期化されたので、calculateArea()
で壁の面積を計算できるようになりました。 関数。
C++ コピー コンストラクター
C++ のコピー コンストラクターは、あるオブジェクトのデータを別のオブジェクトにコピーするために使用されます。
例 3:C++ コピー コンストラクター
#include <iostream>
using namespace std;
// declare a class
class Wall {
private:
double length;
double height;
public:
// initialize variables with parameterized constructor
Wall(double len, double hgt) {
length = len;
height = hgt;
}
// copy constructor with a Wall object as parameter
// copies data of the obj parameter
Wall(Wall &obj) {
length = obj.length;
height = obj.height;
}
double calculateArea() {
return length * height;
}
};
int main() {
// create an object of Wall class
Wall wall1(10.5, 8.6);
// copy contents of wall1 to wall2
Wall wall2 = wall1;
// print areas of wall1 and wall2
cout << "Area of Wall 1: " << wall1.calculateArea() << endl;
cout << "Area of Wall 2: " << wall2.calculateArea();
return 0;
}
出力
Area of Wall 1: 90.3 Area of Wall 2: 90.3
このプログラムでは、コピー コンストラクターを使用して Wall
の 1 つのオブジェクトの内容をコピーしました。 クラスから別のクラスへ。コピー コンストラクターのコードは次のとおりです。
Wall(Wall &obj) {
length = obj.length;
height = obj.height;
}
このコンストラクタのパラメータには Wall
のオブジェクトのアドレスがあることに注意してください クラス。
次に、obj の変数の値を割り当てます object を、コピー コンストラクターを呼び出すオブジェクトの対応する変数に渡します。これが、オブジェクトの内容がコピーされる方法です。
main()
で 、次に 2 つのオブジェクト wall1 を作成します と wall2 wall1 の内容をコピーします wall2 へ :
// copy contents of wall1 to wall2
Wall wall2 = wall1;
ここでは、wall2 wall1 のアドレスを渡して、オブジェクトのコピー コンストラクタを呼び出します。 引数としてのオブジェクト、つまり &obj = &wall1
.
注意 :コンストラクターは、主にオブジェクトの初期化に使用されます。また、オブジェクトの作成時にデフォルト コードを実行するためにも使用されます。
C言語