C++ クラスとオブジェクト
C++ クラスとオブジェクト
このチュートリアルでは、オブジェクトとクラスについて、および例を使用して C++ でそれらを使用する方法について学習します。
前のチュートリアルでは、関数と変数について学びました。関連する関数とデータを 1 か所にまとめて、論理的に扱いやすくすることが望ましい場合があります。
長方形の部屋の長さ、幅、高さを保存し、その面積と体積を計算する必要があるとします。
このタスクを処理するために、length などの 3 つの変数を作成できます。 , 広さ 、および高さ 関数 calculateArea()
とともに そして calculateVolume()
.
ただし、C++ では、個別の変数と関数を作成するのではなく、これらの関連するデータと関数を 1 つの場所にラップすることもできます (オブジェクト を作成することにより)。 )。このプログラミング パラダイムは、オブジェクト指向プログラミングとして知られています。
オブジェクトを作成する前に それらを C++ で使用するには、まず クラス について学ぶ必要があります .
C++ クラス
クラスはオブジェクトの設計図です。
クラスは家のスケッチ(プロトタイプ)と考えることができます。床、ドア、窓などに関するすべての詳細が含まれています。これらの説明に基づいて家を建てます。家がオブジェクトです。
クラスを作成
クラスは、キーワード class
を使用して C++ で定義されます。 その後にクラス名が続きます。
クラスの本体は中括弧内で定義され、最後にセミコロンで終了します。
class className {
// some data
// some functions
};
たとえば、
class Room {
public:
double length;
double breadth;
double height;
double calculateArea(){
return length * breadth;
}
double calculateVolume(){
return length * breadth * height;
}
};
ここでは、Room
という名前のクラスを定義しました .
変数 長さ , 広さ 、および高さ クラス内で宣言されたものは データ メンバー と呼ばれます .そして、関数 calculateArea()
および calculateVolume()
メンバー関数として知られています クラスの。
C++ オブジェクト
クラスが定義されるとき、オブジェクトの仕様のみが定義されます。メモリもストレージも割り当てられていません。
クラスで定義されたデータとアクセス関数を使用するには、オブジェクトを作成する必要があります。
C++ でオブジェクトを定義する構文
className objectVariableName;
Room
のオブジェクトを作成できます クラス (上記の例で定義) は次のとおりです:
// sample function
void sampleFunction() {
// create objects
Room room1, room2;
}
int main(){
// create objects
Room room3, room4;
}
ここでは、2 つのオブジェクト room1 と room2 Room
の クラスは sampleFunction()
で作成されます .同様に、オブジェクト room3 と room4 main()
で作成されます .
ご覧のとおり、プログラムの任意の関数でクラスのオブジェクトを作成できます。クラス自体または他のクラス内でクラスのオブジェクトを作成することもできます。
また、1 つのクラスから必要な数のオブジェクトを作成できます。
C++ アクセス データ メンバーとメンバー関数
.
を使用して、クラスのデータ メンバーとメンバー関数にアクセスできます。 (ドット) 演算子。たとえば、
room2.calculateArea();
これは calculateArea()
を呼び出します Room
内の関数 オブジェクト room2 のクラス .
同様に、データ メンバーには次のようにアクセスできます。
room1.length = 5.5;
この場合、長さを初期化します room1 の変数 5.5
へ .
例 1:C++ プログラミングにおけるオブジェクトとクラス
// Program to illustrate the working of
// objects and class in C++ Programming
#include <iostream>
using namespace std;
// create a class
class Room {
public:
double length;
double breadth;
double height;
double calculateArea() {
return length * breadth;
}
double calculateVolume() {
return length * breadth * height;
}
};
int main() {
// create object of Room class
Room room1;
// assign values to data members
room1.length = 42.5;
room1.breadth = 30.8;
room1.height = 19.2;
// calculate and display the area and volume of the room
cout << "Area of Room = " << room1.calculateArea() << endl;
cout << "Volume of Room = " << room1.calculateVolume() << endl;
return 0;
}
出力
Area of Room = 1309 Volume of Room = 25132.8
このプログラムでは、Room
を使用しました。 クラスとそのオブジェクト room1 部屋の面積と容積を計算します。
main()
で 、長さの値を割り当てました , 広さ 、および高さ コード付き:
room1.length = 42.5;
room1.breadth = 30.8;
room1.height = 19.2;
次に、関数 calculateArea()
を呼び出しました と calculateVolume()
必要な計算を実行します。
キーワード public
の使用に注意してください プログラムで。これは、メンバーが公開され、プログラムからどこからでもアクセスできることを意味します。
必要に応じて、private
を使用してプライベート メンバーを作成することもできます。 キーワード。クラスのプライベート メンバーには、クラス内からのみアクセスできます。例えば、
class Test {
private:
int a;
void function1() { }
public:
int b;
void function2() { }
}
ここで、a および function1()
プライベートです。したがって、クラス外からアクセスすることはできません。
一方、b と function2()
プログラムのどこからでもアクセスできます。
パブリック キーワードとプライベート キーワードの詳細については、C++ クラス アクセス修飾子のチュートリアルをご覧ください。
例 2:C++ クラスで public と private を使用する
// Program to illustrate the working of
// public and private in C++ Class
#include <iostream>
using namespace std;
class Room {
private:
double length;
double breadth;
double height;
public:
// function to initialize private variables
void initData(double len, double brth, double hgt) {
length = len;
breadth = brth;
height = hgt;
}
double calculateArea() {
return length * breadth;
}
double calculateVolume() {
return length * breadth * height;
}
};
int main() {
// create object of Room class
Room room1;
// pass the values of private variables as arguments
room1.initData(42.5, 30.8, 19.2);
cout << "Area of Room = " << room1.calculateArea() << endl;
cout << "Volume of Room = " << room1.calculateVolume() << endl;
return 0;
}
出力
Area of Room = 1309 Volume of Room = 25132.8
上記の例は、クラス変数が非公開になっていることを除いて、最初の例とほぼ同じです。
変数は非公開になったため、main()
から直接アクセスすることはできません .したがって、次のコードの使用は無効になります:
// invalid code
obj.length = 42.5;
obj.breadth = 30.8;
obj.height = 19.2;
代わりに、パブリック関数 initData()
を使用します 関数パラメーター double len
を介してプライベート変数を初期化する 、 double brth
、および double hgt
.
オブジェクトとクラスの詳細については、次のトピックにアクセスしてください:
- C++ コンストラクタ
- 関数からオブジェクトを渡したり返したりする方法
C言語