C++ クラスとオブジェクトと例

クラスとは何ですか?

C++ クラスは、データとデータを操作するメソッドを XNUMX つに結合します。 クラスはオブジェクトの形式も決定します。 クラスに含まれるデータとメソッドはクラス メンバーと呼ばれます。 クラスはユーザー定義のデータ型です。 クラスのメンバーにアクセスするには、クラスのインスタンスを使用します。 クラスはオブジェクトの設計図として見ることができます。

クラスは家のプロトタイプになります。 ドア、窓、床などの位置と大きさが示されています。これらの記述から家を建てることができます。 家がオブジェクトになります。 プロトタイプからたくさんの家を作ることが可能です。 また、クラスから多くのオブジェクトを作成することもできます。

C++ クラス

上の図には、一軒家のプロトタイプがあります。 このプロトタイプから、特徴の異なるXNUMXつの住宅を作成しました。

クラス宣言

C+ では、クラスは class キーワードを使用して定義されます。 この後にクラス名を続ける必要があります。 次に、クラス本体が中括弧 { } の間に追加されます。

構文

class class-name
   {
   // data
   // functions
   };
  • class-name はクラスに割り当てる名前です。
  • データはクラスのデータであり、通常は変数として宣言されます。
  • 関数はクラス関数です。

プライベートキーワードとパブリックキーワード

このXNUMXつのキーワードに出会ったことがあるはずです。 これらはアクセス修飾子です。

  • プライベート:

private キーワードを使用して関数またはクラスを定義すると、プライベートになります。 これらにはクラス内からのみアクセスできます。

  • 公衆:

一方、public キーワードはデータ/関数を公開します。 これらはクラスの外からアクセスできます。

オブジェクト定義

オブジェクトはクラスから作成されます。 クラス オブジェクトは、変数の宣言と同様の方法で宣言されます。 クラス名で始まり、その後にオブジェクト名が続く必要があります。 クラス型のオブジェクト。

構文

class-name object-name;
  • class-name は、オブジェクトの作成元となるクラスの名前です。
  • object-name は、新しいオブジェクトに割り当てられる名前です。

クラスからオブジェクトを作成するこのプロセスは、インスタンス化として知られています。

データメンバーへのアクセス

クラスのパブリック メンバーにアクセスするには、(.)ドット演算子を使用します。 これらは、パブリック アクセス修飾子でマークされたメンバーです。

#include <iostream>
using namespace std;
class Phone {
public:
	double cost;   
	int slots; 
};
int main() {
	Phone Y6;        
	Phone Y7;        

	Y6.cost = 100.0;
	Y6.slots = 2;

	Y7.cost = 200.0;
	Y7.slots = 2;
	cout << "Cost of Huawei Y6 : " << Y6.cost << endl;
	cout << "Cost of Huawei Y7 : " << Y7.cost << endl;

	cout << "Number of card slots for Huawei Y6 : " << Y6.slots << endl;
	cout << "Number of card slots for Huawei Y7 : " << Y7.slots << endl;

	return 0;
}

出力:

データメンバーへのアクセス

コードのスクリーンショットは次のとおりです。

データメンバーへのアクセス

コードの説明:

  1. iostream ヘッダー ファイルの機能を使用するには、コードに iostream ヘッダー ファイルを含めます。
  2. std 名前空間をコードに含めて、呼び出さずにそのクラスを使用します。
  3. Phone という名前のクラスを宣言します。
  4. public アクセス修飾子を使用して、これから作成する変数をパブリックにアクセスできるものとしてマークします。
  5. double データ型の変動コストを宣言します。
  6. スロットという名前の整変数を宣言します。
  7. クラス本体の終了。
  8. main()関数を呼び出します。 プログラム ロジックは本体内に追加する必要があります。
  9. Y6 という名前の Phone タイプのオブジェクトを作成します。 これをインスタンス化と呼びます。
  10. Y7 という名前の Phone タイプのオブジェクトを作成します。 これをインスタンス化と呼びます。
  11. オブジェクト Y6 を使用して、クラス Phone の変数/メンバー コストにアクセスします。 値は 100.0 に設定されます。 Y6 のコストは 100.0 に設定されます。
  12. オブジェクト Y6 を使用して、クラス Phone の変数/メンバー スロットにアクセスします。 値は 2 に設定されます。Y6 のスロットは 2 に設定されます。
  13. オブジェクト Y7 を使用して、クラス Phone の変数/メンバー コストにアクセスします。 値は 200.0 に設定されます。 Y7 のコストは 200.0 に設定されます。
  14. オブジェクト Y7 を使用して、クラス Phone の変数/メンバー スロットにアクセスします。 値は 2 に設定されます。Y7 のスロットは 2 に設定されます。
  15. Y6 のコストを他のテキストと一緒にコンソールに出力します。
  16. Y7 のコストを他のテキストと一緒にコンソールに出力します。
  17. Y6 のスロット数を他のテキストと一緒に出力します。
  18. Y7 のスロット数を他のテキストと一緒に出力します。
  19. プログラムは正常に完了すると値を返す必要があります。
  20. main() 関数の本体の終わり。

プライベートクラスとは何ですか?

プライベートとしてマークされたクラス メンバーには、クラス内で定義された関数によってのみアクセスできます。 クラスの外で定義されたオブジェクトまたは関数は、そのようなメンバーに直接アクセスできません。 プライベート クラス メンバーには、member 関数と friends 関数によってのみアクセスできます。

保護クラスとは何ですか?

protected としてマークされたクラス メンバーは、private としてマークされたクラス メンバーよりも有利です。 これらは、その定義のクラス内の関数によってアクセスできます。 さらに、派生クラスからもアクセスできます。

#include <iostream>
using namespace std;
class ClassA {
public:
	void set_a(int val);
	int get_a(void);

private:
	int a;
};
int ClassA::get_a(void) {
	return a;
}
void ClassA::set_a(int val) {
	a = val;
}
int main() {
	ClassA a;
	a.set_a(20); 
	cout << "Value of a is: " << a.get_a(); 
	return 0;
}

出力:

データメンバーへのアクセス

コードのスクリーンショットは次のとおりです。

データメンバーへのアクセス

コードの説明:

  1. その関数を使用するには、コードに iostream ヘッダー ファイルを含めます。
  2. std 名前空間をコードに含めると、そのクラスを呼び出さずに使用できます。
  3. ClassA という名前のクラスを作成します。
  4. public アクセス修飾子を使用して、作成するクラス メンバーをパブリックにアクセスできるものとしてマークします。
  5. XNUMX つの整数値 val を受け取る set_a() という名前の関数を作成します。
  6. get_a() という名前の関数を作成します。
  7. private アクセス修飾子を使用して、作成するクラス メンバーをプライベートにアクセスできるものとしてマークします。
  8. a という名前の整数変数を宣言します。
  9. クラス本体の終了。
  10. クラス名とスコープ解決演算子を使用して、関数 get_a() にアクセスします。 関数が呼び出されたときに何を行うかを定義したいと思います。
  11. 関数 get_a() は、呼び出されると変数 a の値を返す必要があります。
  12. 関数 get_a() の定義は終了です。
  13. クラス名とスコープ解決演算子を使用して、関数 set_a() にアクセスします。 関数が呼び出されたときに何を行うかを定義したいと思います。
  14. 変数 val の値を変数 a に代入します。
  15. 関数 set_a() の定義の終わり。
  16. main() 関数を呼び出します。 プログラム ロジックは、この関数の本体内に追加する必要があります。
  17. ClassA のインスタンスを作成し、名前を a にします。
  18. 上記のクラス インスタンスと関数 set_a() を使用して、値 20 を変数 a に割り当てます。
  19. コンソール上に変数 a の値と一緒にテキストを出力します。 変数 a の値は、get_a() 関数を呼び出すことによって取得されます。
  20. プログラムは正常に完了すると値を返す必要があります。
  21. 関数 main() の本体の終わり。

#include <iostream>
using namespace std;
class ParentClass {
protected:
	int value;
};
class ChildClass : public ParentClass {
public:
	void setId(int x) {
		value = x;
	}
	void displayValue() {
	cout << "Value is: " << value << endl;
	}
};
int main() {
	ChildClass c;
	c.setId(21);
	c.displayValue();
	return 0;
}

出力:

データメンバーへのアクセス

コードのスクリーンショットは次のとおりです。

データメンバーへのアクセス

コードの説明:

  1. その関数を使用するには、コードに iostream ヘッダー ファイルを含めます。
  2. std 名前空間をコードに含めると、そのクラスを呼び出さずに使用できます。
  3. ParentClass という名前のクラスを作成します。
  4. protected アクセス修飾子を使用して、作成するクラス メンバーを保護としてマークします。
  5. value という名前の整数変数を作成します。
  6. クラス本体の終了。
  7. ParentClass を継承する ChildClass という名前の新しいクラスを作成します。
  8. protected アクセス修飾子を使用して、作成するクラス メンバーを子クラスにアクセスできるものとしてマークします。
  9. XNUMX つの整数値 x を取る setId() という名前の関数を作成します。
  10. 変数 x の値を変数値に代入します。
  11. 関数 setId() の定義の終わり。
  12. displayValue() という名前の関数を作成します。
  13. value という名前の変数の値を他のテキストと一緒にコンソールに出力します。
  14. 関数displayValue()の本体の終わり。
  15. ChildClass という名前のクラス本体の終わり。
  16. main() 関数を呼び出します。 プログラム ロジックは、この関数の本体内に追加する必要があります。
  17. c. ChildClass のインスタンスを作成し、名前を付けます。
  18. 上記のクラス インスタンスと関数 setId() を使用して、値 21 を変数 x に割り当てます。
  19. 上記のクラス インスタンスを使用して、displayValue() という名前の関数を呼び出します。
  20. プログラムは正常に完了すると値を返す必要があります。
  21. 関数 main() の本体の終わり。

クラスメンバー関数

関数はデータを操作するのに役立ちます。 クラス メンバー関数は、次の XNUMX つの方法で定義できます。

  • クラス定義内
  • クラス定義の外側

関数をクラス定義の外で定義する場合は、スコープ解決演算子 (::) を使用する必要があります。 これにはクラス名と関数名を付ける必要があります。

#include <iostream>
#include <string>
using namespace std;
class Guru99
{
public:
	string tutorial_name;
	int id;
	void printname();
	void printid()
	{
		cout << "Tutorial id is: "<< id;
	}
};
void Guru99::printname()
{
	cout << "Tutorial name is: " << tutorial_name;
}
int main() {
	Guru99 guru99;
	guru99.tutorial_name = "C++";
	guru99.id = 1001;
	guru99.printname();
	cout << endl;
	guru99.printid();
	return 0;
}

出力:

クラスメンバー関数

コードのスクリーンショットは次のとおりです。

クラスメンバー関数

コードの説明:

  1. その機能を使用するには、プログラムに iostream ヘッダー ファイルをインクルードします。
  2. その関数を使用するには、プログラムに文字列ヘッダー ファイルを含めます。
  3. std 名前空間をコードに含めると、そのクラスを呼び出さずに使用できます。
  4. Guru99 という名前のクラスを作成します。
  5. public アクセス修飾子を使用して、これから作成するクラス メンバーをパブリックにアクセスできるものとしてマークします。
  6. tutorial_name という名前の文字列変数を作成します。
  7. id という名前の整数変数を作成します。
  8. printname() という名前の関数を作成します。 この関数はクラス定義内では定義されていません。
  9. print() という名前の関数を作成します。 この関数はクラス定義内で定義されます。 その本体はクラス定義内に追加されています。
  10. 変数 id の値を他のテキストと一緒にコンソールに出力します。 これは printid() 関数の本体内に追加されていることに注意してください。 これは、printid() 関数が呼び出されたときにのみ実行されます。
  11. 関数 printid() の本体の終わり。
  12. クラス Guru99 の本体の終わり。
  13. 関数 printname() の定義の開始。
  14. 変数tutorial_nameの値を他のテキストと一緒にコンソールに出力します。 これは printname() 関数の本体内に追加されていることに注意してください。 これは、printname() 関数が呼び出されたときにのみ実行されます。
  15. printname() 関数の定義の終わり。
  16. main() 関数を呼び出します。 プログラム ロジックは、この関数の本体内に追加する必要があります。
  17. クラス Guru99 のインスタンスを作成し、guru99 という名前を付けます。
  18. 上記のインスタンスを使用して、C++ の値を変数tutorial_nameに割り当てます。
  19. guru99 インスタンスを使用して、値 1001 を変数 id に割り当てます。
  20. インスタンス guru99 を使用して関数 printname() を呼び出します。
  21. end (終了行) コマンドを呼び出して、コンソールに新しい空白行を出力します。
  22. インスタンス guru99 を使用して関数 printid() を呼び出します。
  23. プログラムは正常に完了すると値を返す必要があります。
  24. main() 関数の本体の終わり。

コンストラクターとデストラクター

コンストラクターとは何ですか?

コンストラクトは、オブジェクトを初期化する特別な関数です。 の C++ コンパイラ オブジェクトの作成時にコンストラクターを呼び出します。 コンストラクターは、クラス メンバーに値を割り当てるのに役立ちます。 もちろん、これはメモリ空間が割り当てられた後の話です。

デストラクターとは何ですか?

一方、デストラクターはクラス オブジェクトを破棄するのに役立ちます。

コンストラクター名はクラス名と似ている必要があります。 コンストラクターには戻り値の型がありません。

コンストラクターはクラス本体の内部または外部で定義できます。 クラス本体の外で定義する場合は、クラス名とスコープ解決演算子 (::) を使用して定義する必要があります。

#include <iostream>  
using namespace std;
class ClassA {
public:
	ClassA() {
		cout << "Class constructor called"<<endl;
	}
	~ClassA() {
		cout << "Class destructor called"<<endl;
	}
};

int main() {
	ClassA a;
	int p = 1;
		if (p) {
			ClassA b; 
		}   
}

出力:

コンストラクターとデストラクター

コードのスクリーンショットは次のとおりです。

コンストラクターとデストラクター

コードの説明:

  1. その関数を使用するには、iostream ヘッダー ファイルをコードに組み込みます。
  2. std 名前空間をコードに含めると、そのクラスを呼び出さずに使用できます。
  3. ClassA という名前のクラスを作成します。
  4. public アクセス修飾子を使用して、作成しようとしているメンバーをパブリックにアクセスできるものとしてマークします。
  5. クラスのコンストラクターを作成します。
  6. コンストラクターが呼び出されたときにコンソールに出力されるテキスト。 endl は C++ キーワードで、終了行を意味します。 マウスカーソルを次の行に移動します。
  7. クラス コンストラクターの本体の終わり。
  8. クラスのデストラクターを作成します。
  9. デストラクターが呼び出されたときにコンソールに出力されるテキスト。 endl は C++ キーワードで、終了行を意味します。 マウスカーソルを次の行に移動します。
  10. デストラクターの本体の終わり。
  11. クラス本体の終了。
  12. main() 関数を呼び出します。 プログラム ロジックは、この関数の本体内に追加する必要があります。
  13. クラス オブジェクトを作成し、名前を a にします。 コンストラクターが呼び出されます。
  14. p という名前の整数変数を作成し、値 1 を割り当てます。
  15. 変数 p を使用して if ステートメント ブロックを作成します。
  16. a. クラス オブジェクトを作成し、名前を付けます。 デストラクタが呼び出されます。
  17. if ステートメントの本文の終わり。
  18. main() 関数の本体の終わり。

まとめ

  • C + + オブジェクト指向です。
  • クラスは、C++ をオブジェクト指向にする主要な機能を形成します。
  • C++ クラスは、データとデータを操作するメソッドを XNUMX つに結合します。
  • クラスはオブジェクトの設計図です。
  • クラスはオブジェクトの形式を決定します。
  • クラスに含まれるデータとメソッドはクラス メンバーと呼ばれます。
  • クラスのメンバーにアクセスするには、クラスのインスタンスを使用する必要があります。
  • クラスを作成するには、class キーワードを使用します。
  • クラス メンバー関数は、クラスの内部または外部で定義できます。