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


C++ は、C 言語に基づいてオブジェクト指向プログラミングを追加します。クラスは C++ の中核機能であり、多くの場合ユーザー定義型と呼ばれます。

クラスは、データ表現とデータを処理するメソッドを含むオブジェクトの形式を指定するために使用されます。クラス内のデータとメソッドは、クラスのメンバーと呼ばれます。クラス内の関数は、クラスのメンバーと呼ばれます。

C++ クラス定義

クラスの定義は、基本的にデータ型を定義するための青写真です。これは実際にはデータを定義しませんが、クラスの名前が何を意味するかを定義します。つまり、クラスのオブジェクトに含まれる内容と、このオブジェクトに対してどのような操作を実行できるかを定義します。

クラス定義はキーワードclassで始まり、その後にクラス名が続きます。クラスの本体は一対の中括弧で囲まれています。クラス定義の後にはセミコロンまたは宣言のリストを続ける必要があります。たとえば、次のようにキーワード class を使用して Box データ型を定義します。

class Box
{
   public:
      double length;   // Length of a box
      double breadth;  // Breadth of a box
      double height;   // Height of a box
};

キーワード public は、クラス メンバーのアクセス プロパティを決定します。クラス オブジェクトのスコープ内では、クラスの外部からパブリック メンバーにアクセスできます。クラスのメンバーを private または protected として指定することもできます。これについては後で説明します。

C++ オブジェクトを定義する

クラスはオブジェクトの設計図を提供するため、基本的にオブジェクトはクラスに基づいて作成されます。プリミティブ型の変数と同じように、クラスのオブジェクトを宣言します。次のステートメントは、Box クラスの 2 つのオブジェクトを宣言します。

Box Box1;          // 声明 Box1,类型为 Box
Box Box2;          // 声明 Box2,类型为 Box

オブジェクト Box1 と Box2 には、それぞれのデータ メンバーがあります。

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

クラスのオブジェクトのパブリック データ メンバーには、直接メンバー アクセス演算子 (.) を使用してアクセスできます。これらの概念をよりよく理解するために、次の例を試してみましょう:

#include <iostream>

using namespace std;

class Box
{
   public:
      double length;   // 长度
      double breadth;  // 宽度
      double height;   // 高度
};

int main( )
{
   Box Box1;        // 声明 Box1,类型为 Box
   Box Box2;        // 声明 Box2,类型为 Box
   double volume = 0.0;     // 用于存储体积
 
   // box 1 详述
   Box1.height = 5.0; 
   Box1.length = 6.0; 
   Box1.breadth = 7.0;

   // box 2 详述
   Box2.height = 10.0;
   Box2.length = 12.0;
   Box2.breadth = 13.0;

   // box 1 的体积
   volume = Box1.height * Box1.length * Box1.breadth;
   cout << "Box1 的体积:" << volume <<endl;

   // box 2 的体积
   volume = Box2.height * Box2.length * Box2.breadth;
   cout << "Box2 的体积:" << volume <<endl;
   return 0;
}

上記のコードをコンパイルして実行すると、次の結果が生成されます:

Box1 的体积:210
Box2 的体积:1560

プライベート メンバーと保護されたメンバーには直接アクセスできないことに注意することが重要です。直接メンバー アクセス演算子 (.) を使用します。プライベートメンバーと保護されたメンバーにアクセスする方法については、後のチュートリアルで学びます。

クラスとオブジェクトの詳細な説明

ここまでで、C++ のクラスとオブジェクトの基本を理解しました。次のリストには、C++ クラスとオブジェクトに関連するその他の概念もリストされています。対応するリンクをクリックして学習できます。

概念説明
クラスメンバー関数クラスのメンバー関数は、クラス定義内の他の変数と同様に、その定義とプロトタイプがクラス定義内に記述されている関数を指します。
クラスアクセス修飾子クラスメンバーは、パブリック、プライベート、または保護として定義できます。デフォルトではプライベートとして定義されています。
コンストラクターとデストラクター クラスのコンストラクターは、新しいオブジェクトの作成時に呼び出される特別な関数です。クラスのデストラクターも、作成されたオブジェクトが削除されるときに呼び出される特別な関数です。
C++ コピー コンストラクター コピー コンストラクターは、オブジェクトの作成時に、同じクラス内で以前に作成されたオブジェクトを使用して、新しく作成されたオブジェクトを初期化する特別なコンストラクターです。
C++ Friend FunctionFriend 関数 は、クラスのプライベート メンバーと保護されたメンバーにアクセスできます。
C++ インライン関数 インライン関数を使用すると、コンパイラは関数が呼び出される時点で関数本体内のコードを展開しようとします。
C++ の this ポインターすべてのオブジェクトには、オブジェクト自体を指す特別なポインター this があります。
C++ のクラスへのポインタ クラスへのポインタは、構造体へのポインタのように動作します。実際、クラスは関数を備えた構造体と考えることができます。
C++ クラスの静的メンバー クラスのデータ メンバーと関数メンバーの両方を静的に宣言できます。