工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

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

クラスとは?

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

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

上の図では、1 つの家のプロトタイプがあります。このプロトタイプから、特徴の異なる 2 つの家を作成しました。

このチュートリアルでは、次のことを学びます:

クラス宣言

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

構文:

class class-name
   {
   // data
   // functions
   };

プライベートおよびパブリック キーワード

この2つのキーワードに出くわしたに違いありません。それらはアクセス修飾子です。

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

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

オブジェクトの定義

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

構文:

class-name object-name;

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

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

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

例 1:

#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;
}

出力:

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

コードの説明 :

<オール>
  • 関数を使用するために、コードに iostream ヘッダー ファイルを含めます。
  • コードに std 名前空間を含めて、そのクラスを呼び出さずに使用する
  • Phone という名前のクラスを宣言します。
  • public アクセス修飾子を使用して、作成しようとしている変数を公開アクセス可能としてマークします。
  • double データ型の変動費を宣言します。
  • slots という整数変数を宣言します。
  • クラス本体の終わり。
  • main() 関数の呼び出し。プログラム ロジックは、その本体内に追加する必要があります。
  • Phone タイプの Y6 という名前のオブジェクトを作成します。これはインスタンス化と呼ばれます。
  • Phone タイプの Y7 という名前のオブジェクトを作成します。これはインスタンス化と呼ばれます。
  • オブジェクト Y6 を使用してクラス Phone の変数/メンバー コストにアクセスします。値は 100.0 に設定されます。 Y6 のコストは現在 100.0 に設定されています。
  • オブジェクト Y6 を使用してクラス Phone の変数/メンバー スロットにアクセスします。値は 2 に設定されます。Y6 のスロットは 2 に設定されます。
  • オブジェクト Y7 を使用してクラス Phone の変数/メンバー コストにアクセスします。値は 200.0 に設定されます。 Y7 のコストは現在 200.0 に設定されています。
  • オブジェクト Y7 を使用してクラス Phone の変数/メンバー スロットにアクセスします。値は 2 に設定されます。Y7 のスロットは 2 に設定されます。
  • Y6 のコストを他のテキストと一緒にコンソールに表示します。
  • 他のテキストと一緒にコンソールに Y7 のコストを印刷します。
  • Y6 のスロット数を他のテキストと一緒に出力してください。
  • Y7 のスロット数を他のテキストと一緒に出力してください。
  • プログラムは、正常終了時に値を返さなければなりません。
  • main() 関数の本体の終わり。
  • プライベート クラスとは?

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

    保護クラスとは?

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

    例 2:

    #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;
    }
    

    出力:

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

    コードの説明:

    <オール>
  • コードに iostream ヘッダー ファイルをインクルードして、その関数を使用します。
  • コードに std 名前空間を含めて、呼び出さずにそのクラスを使用します。
  • ClassA という名前のクラスを作成します。
  • パブリック アクセス修飾子を使用して、作成するクラス メンバーを公開アクセス可能としてマークします。
  • 1 つの整数値 val を取る set_a() という名前の関数を作成します。
  • get_a() という名前の関数を作成します。
  • private アクセス修飾子を使用して、作成するクラス メンバーを非公開でアクセスできるようにマークします。
  • a という整数変数を宣言します。
  • クラス本体の終わり。
  • クラス名とスコープ解決演算子を使用して、関数 get_a() にアクセスします。関数が呼び出されたときに何をするかを定義します。
  • 関数 get_a() は、呼び出されたときに変数 a の値を返す必要があります。
  • 関数 get_a(). の定義の終わり
  • クラス名とスコープ解決演算子を使用して関数 set_a() にアクセスします。関数が呼び出されたときに何をするかを定義します。
  • 変数 val の値を変数 a に代入します。
  • 関数 set_a(). の定義の終わり
  • main() 関数を呼び出します。プログラム ロジックは、この関数の本体内に追加する必要があります。
  • ClassA のインスタンスを作成し、a という名前を付けます。
  • 上記のクラス インスタンスと関数 set_a() を使用して、変数 a に値 20 を割り当てます。
  • コンソールに変数 a の値と一緒にテキストを出力します。変数 a の値は、get_a() 関数を呼び出すことによって取得されます。
  • プログラムは、正常終了時に値を返さなければなりません。
  • 関数 main() の本体の終了
  • 例 3:

    #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;
    }
    

    出力:

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

    コードの説明:

    <オール>
  • コードに iostream ヘッダー ファイルをインクルードして、その関数を使用します。
  • コードに std 名前空間を含めて、呼び出さずにそのクラスを使用します。
  • ParentClass という名前のクラスを作成します。
  • protected アクセス修飾子を使用して、作成するクラス メンバーを保護済みとしてマークします。
  • value という名前の整数変数を作成します。
  • クラス本体の終わり。
  • ParentClass を継承する ChildClass という名前の新しいクラスを作成します。
  • 保護されたアクセス修飾子を使用して、作成するクラス メンバーを子クラスからアクセス可能としてマークします。
  • 1 つの整数値 x を受け取る setId() という名前の関数を作成します。
  • 変数 x の値を変数値に代入します。
  • 関数 setId(). の定義の終わり
  • displayValue() という名前の関数を作成します。
  • value という名前の変数の値を他のテキストと一緒にコンソールに出力します。
  • 関数 displayValue() の本体の終了
  • ChildClass という名前のクラスの本体の末尾。
  • main() 関数を呼び出します。プログラム ロジックは、この関数の本体内に追加する必要があります。
  • ChildClass のインスタンスを作成し、c という名前を付けます。
  • 上記のクラス インスタンスと関数 setId() を使用して、変数 x に値 21 を割り当てます。
  • 上記のクラス インスタンスを使用して、displayValue() という名前の関数を呼び出します。
  • プログラムは、正常終了時に値を返さなければなりません。
  • 関数 main() の本体の終了
  • クラス メンバー関数

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

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

    例 2:

    #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;
    }
    

    出力:

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

    コードの説明:

    <オール>
  • iostream ヘッダー ファイルをプログラムにインクルードして、その関数を使用します。
  • 関数を使用するために、プログラムに文字列ヘッダー ファイルを含めます。
  • コードに std 名前空間を含めて、呼び出さずにそのクラスを使用します。
  • Guru99 という名前のクラスを作成します。
  • パブリック アクセス修飾子を使用して、作成しようとしているクラス メンバーを公開アクセス可能としてマークします。
  • tutorial_name という名前の文字列変数を作成します。
  • id という名前の整数変数を作成します。
  • printname() という名前の関数を作成します。この関数はクラス定義内で定義されていません。
  • printed() という名前の関数を作成します。この関数は、クラス定義内で定義されています。その本体はクラス定義内に追加されています。
  • 変数 id の値を他のテキストと一緒にコンソールに出力します。これは printid() 関数の本体内に追加されていることに注意してください。 printid() 関数が呼び出されたときにのみ実行されます。
  • 関数 printid(). の本体の終わり
  • クラス Guru99 の本体の終わり。
  • 関数 printname() の定義の開始
  • 変数 tutorial_name の値を他のテキストと一緒にコンソールに出力します。これは printname() 関数の本体内に追加されていることに注意してください。 printname() 関数が呼び出されたときにのみ実行されます。
  • printname() 関数の定義の終わり
  • main() 関数を呼び出します。プログラム ロジックは、この関数の本体内に追加する必要があります。
  • Guru99 クラスのインスタンスを作成し、guru99 という名前を付けます。
  • 上記のインスタンスを使用して、C++ の値を変数 tutorial_name に割り当てます。
  • guru99 インスタンスを使用して、値 1001 を変数 id に割り当てます。
  • インスタンス guru99 を使用して関数 printname() を呼び出します。
  • end (行末) コマンドを呼び出して、コンソールに新しい空白行を出力します。
  • インスタンス guru99 を使用して関数 printid() を呼び出します。
  • プログラムは、正常終了時に値を返さなければなりません。
  • main() 関数の本体の終わり。
  • コンストラクタとデストラクタ

    コンストラクタとは?

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

    デストラクタとは?

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

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

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

    例 3:

    #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; 
    		}   
    }
    

    出力:

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

    コードの説明:

    <オール>
  • iostream ヘッダー ファイルをコードにインクルードして、その関数を使用します。
  • コードに std 名前空間を含めて、呼び出さずにそのクラスを使用します。
  • ClassA という名前のクラスを作成します。
  • public アクセス修飾子を使用して、作成しようとしているメンバーを公開アクセス可能としてマークします。
  • クラスのコンストラクタを作成します。
  • コンストラクターが呼び出されたときにコンソールに出力するテキスト。 endl は C++ のキーワードで、終了行を意味します。マウス カーソルを次の行に移動します。
  • クラス コンストラクターの本体の末尾。
  • クラスのデストラクタを作成します。
  • デストラクタが呼び出されたときにコンソールに出力するテキスト。 endl は C++ のキーワードで、終了行を意味します。マウス カーソルを次の行に移動します。
  • デストラクタの本体の終わり
  • クラス本体の終わり。
  • main() 関数を呼び出します。プログラム ロジックは、この関数の本体内に追加する必要があります。
  • クラス オブジェクトを作成し、a という名前を付けます。コンストラクターが呼び出されます。
  • p という整数変数を作成し、値 1 を割り当てます。
  • 変数 p を使用して if ステートメント ブロックを作成します。
  • クラス オブジェクトを作成し、b という名前を付けます。デストラクタが呼び出されます。
  • if ステートメントの本文の終わり
  • main() 関数の本体の終わり。
  • まとめ:


    C言語

    1. C# クラスとオブジェクト
    2. C++ クラスとオブジェクト
    3. C++ フレンド関数とフレンド クラス
    4. C++ クラス テンプレート
    5. C++ の演算子と例:型とプログラムとは
    6. C++ Switch Case ステートメントと EXAMPLE
    7. 例による配列の C++ 動的割り当て
    8. C++ 構造体と例
    9. C++ の std::list と例
    10. 構造体とクラスの違い:C++ の例で説明
    11. 例を含む C# 抽象クラスのチュートリアル:抽象化とは?