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

C++ は C 言語の基礎の上にオブジェクト指向プログラミングを追加しました。C++ はオブジェクト指向プログラミングをサポートします。クラスは C++ の核心的な特性であり、通常はユーザー定義型と呼ばれます。

クラスはオブジェクトの形式を指定するために使用され、ユーザー定義のデータ型であり、データと関数をカプセル化した組み合わせです。クラス内のデータはメンバ変数と呼ばれ、関数はメンバ関数と呼ばれます。クラスはテンプレートとみなすことができ、同じ属性と動作を持つ複数のオブジェクトを作成するために使用できます。

C++ クラス定義

クラスを定義するにはキーワードが必要ですclassそしてクラスの名前を指定し、クラスの本体は一対の波括弧で囲まれ、その本体にはクラスのメンバ変数とメンバ関数が含まれます。

クラスを定義することは、本質的にデータ型の青写真(ブループリント)を定義することであり、クラスのオブジェクトが何を含み、そのオブジェクトに対してどのような操作を実行できるかを定義します。

以下の例ではキーワードを使用しますclassBoxデータ型を定義し、length、breadth、heightの3つのメンバー変数を含みます:

class Box { public: double length; // 箱の長さ double breadth; // 箱の幅 double height; // 箱の高さ };

关键字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; // 高度 // 成员函数声明 double get(void); void set( double len, double bre, double hei ); }; // 成员函数定义 double Box::get(void) { return length * breadth * height; } void Box::set( double len, double bre, double hei) { length = len; breadth = bre; height = hei; } int main( ) { Box Box1; // Box1 を宣言、型は Box Box Box2; // Box2 を宣言、型は Box Box Box3; // Box3 を宣言、型は 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; // box 3 详述 Box3.set(16.0, 8.0, 12.0); volume = Box3.get(); cout << "Box3 の体積:" << volume <<endl; return 0; }

上記のコードがコンパイルおよび実行されると、次の結果が生成されます。

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

プライベートメンバーとプロテクトメンバーは、直接メンバーアクセス演算子 (.) を使用して直接アクセスできないことに注意してください。プライベートメンバーとプロテクトメンバーへのアクセス方法については、後のチュートリアルで学習します。

クラス & オブジェクトの詳細

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

概念描述
类成员函数クラスのメンバ関数とは、定義とプロトタイプをクラス定義の内部に記述する関数のことです。クラス定義内の他の変数と同じです。
类访问修饰符クラスメンバーは public、private、protected として定義できます。デフォルトでは private として定義されます。
构造函数 & 析构函数クラスのコンストラクタは特別な関数であり、新しいオブジェクトを作成するときに呼び出されます。クラスのデストラクタも特別な関数であり、作成したオブジェクトを削除するときに呼び出されます。
C++ 拷贝构造函数コピーコンストラクタは特別なコンストラクタであり、オブジェクトを作成するときに、同じクラスの以前に作成されたオブジェクトを使用して、新しく作成されたオブジェクトを初期化します。
C++ 友元函数友元函数クラスの private および protected メンバーにアクセスできます。
C++ 内联函数インライン関数を使用すると、コンパイラは関数を呼び出した場所で関数本体のコードを展開しようとします。
C++ における this ポインタすべてのオブジェクトには特別なポインタがありますthis、それはオブジェクト自体を指します。
C++ のクラスへのポインタクラスを指すポインタの方法は、構造体を指すポインタと同じです。実際には、クラスは関数を備えた構造体とみなすことができます。
C++ クラスの静的メンバークラスのデータメンバーと関数メンバーはどちらも static として宣言できます。
其他扩展