C++ プログラミングの基礎 [2]

C++ プログラミングの基礎 [2]

1. クラスの概念

1. クラスとインスタンスのソース

型は抽象化であり、型のインスタンスは具体的なエンティティです

1. 属性

属性は、関心のあるインスタンスの特性です。

2. 行動

動作とは、インスタンスがそれ自体に対して実行できると想定されるものです

2. プログラム内のクラスとオブジェクト

クラスはタイプに対応し、オブジェクトはインスタンスに対応します

1. データメンバー

オブジェクトのデータ メンバーは、その値がプロパティを表す変数です
。オブジェクト指向プログラミングでは、オブジェクトのプロパティはデータ メンバーを使用してシミュレートされます。

2. メンバー関数

オブジェクト指向プログラミングでは、メンバー関数を使用してオブジェクトの動作をシミュレートします。

2、クラス

オブジェクト指向モードの C++ プログラムは、クラス定義、メンバー関数定義、アプリケーション プログラムで構成されます。

1. クラス定義

クラス定義はクラスヘッダー、クラス本体、セミコロンの 3 つの部分で構成され、
クラスヘッダーは予約語クラスと設計者が指定した名前で構成されます。
クラス名は、小文字で始まるライブラリ内のクラスと区別するために、大文字で始まります。 クラス
本体は、データ メンバーとメンバー関数の宣言を含むステートメント ブロックです
。 最後に、閉じ括弧の後にセミコロンがあります。

1. データメンバーを宣言する

相互に依存できないクラス内の変数または定数データ メンバーに対して、組み込みクラスまたはその他の以前に定義されたクラス型を宣言します。

2. メンバー関数の宣言

クラスの動作をシミュレートするために使用されるすべての関数を宣言します
const で修飾された関数は何も変更できません

3. アクセス修飾子

これは、クラスのアクセス可能性を決定するために使用され、 private、 protected 、 public に分類されます。
デフォルトのプライベート
メンバーは、メンバーがプライベートの場合はメンバー関数を通じてのみアクセスできます。メンバーが保護されている場合は、サブクラスを通じてアクセスできます。

4. データメンバーのアクセス修飾子

クラスのデータ メンバーは通常、プライベートに設定されます

5. メンバー関数のアクセス修飾子

クラスのインスタンス メンバー関数は通常 public に設定されます
が、他のメンバー関数を支援するために使用され、クラス外の関数呼び出しを許可しない場合は、private に設定する必要があります。

6. グループアクセス修飾子

クラス定義全体でプライベート キーワードとパブリック キーワードが 1 つだけ使用され、その後にグループ化のためのコロンが続きます。

2. メンバ関数の定義

クラススコープのシンボル::
オブジェクトの値を変更しない場合は、括弧の後、中括弧の前に const を追加します。

3. インライン関数

関数呼び出しの実行時間が関数内のコードの実行時間よりも長い場合、プログラムのパフォーマンスを向上させるために、関数をインライン関数として宣言して、関数呼び出しを実際のコードに置き換えるようコンパイラーに指示できます。関数内で

1. 暗黙的なインライン関数

関数宣言をその定義で置き換える場合、関数は暗黙的にインライン化されるように定義されます (推奨されません)。

2. 明示的なインライン関数

関数定義の前にキーワード inline を入力すると、関数は明示的なインライン関数として定義されます。

4. アプリケーション

1. オブジェクトのインスタンス化

2. 操作対象

3. メンバー選定

オブジェクトとメンバー関数の間のポイントは、メンバー選択演算子と呼ばれます

5. 構造

構造体ではすべてのメンバーがデフォルトでパブリックですが、クラスではすべてのメンバーがデフォルトでプライベートです

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

空のクラスには 6 つのメンバー関数があります: コンストラクターとデストラクター (初期化とクリーンアップ)、コピー コピーと代入オーバーロード (コピーとコピー)、通常のオブジェクト アドレスと const オブジェクト アドレス (アドレス オーバーロード)

1. コンストラクター

コンストラクターは、オブジェクトの作成と初期化に使用される特別なメンバー関数であり、通常は public
クラス内に、パラメーター、デフォルト、コピーの 3 種類のコンストラクターを含めることができます。

1. パラメータコンストラクタ

クラスのパラメトリック コンストラクターはオーバーロードできる

2. デフォルトのコンストラクター

クラスのデフォルトのコンストラクターはオーバーロードできません

3. コンストラクターのコピー

クラスのコピー関数はオーバーロードできません

2. デストラクター

デストラクターの前のチルダも名前の一部です
デストラクターは、オブジェクトをクリーンアップしてリサイクルするパラメーターのない特別なメンバー関数です

3. オブジェクトの作成と破棄

4. 必要なメンバー関数

パラメーター/デフォルト コンストラクターが 1 つ必要で、コピー コンストラクターとデストラクターが必要で、システムが提供するものは合成です***

4. インスタンスのメンバー

1. インスタンスデータメンバーとインスタンスメンバー関数

クラスのインスタンス データ メンバーは通常プライベートであり、インスタンス メンバー関数を通じてのみアクセスされます。
クラスのインスタンス メンバー関数は、クラスの外部からアクセスできるようにパブリックである必要があります。
メンバー選択演算子 .および -> (間接演算子とメンバーの)セレクターの組み合わせ *xxx.)

1. ロックとロック解除

メンバー関数は、このポインターが指すオブジェクトによって使用されます。

2. 隠しパラメータ

3. このポインタを明示的に使用する

4. ホストオブジェクト

ホスト オブジェクトは、インスタンス メンバー関数が特定の瞬間に操作するオブジェクト (this ポインターが指すオブジェクト) です。

5. アクセサメンバー関数

アクセサー インスタンス関数はホスト オブジェクトの状態を変更できません。const 修飾子が必要です。

6. チェンジャーメンバー関数

ミューテーター インスタンス関数はホスト オブジェクトの状態を変更します。const 修飾子を持つことはできません。

2. クラス不変条件

不変条件は、一部またはすべてのクラス データ メンバーに課す必要がある 1 つ以上の条件です。

5. 静的メンバー

静的メンバーは、クラスの複数のオブジェクト間のデータ共有に使用できます。
静的データ メンバーはすべてのインスタンスのデータ メンバーに属し、キーワード static で修飾する必要があります。静的メンバー関数にはホストオブジェクト
がなく、const 修飾子を使用してアクセスすることはできません
インスタンス データ メンバー (このポインター パラメーターがないため)
インスタンス メンバー関数はインスタンス データ メンバーにアクセスする必要があり、静的メンバー関数は静的データ メンバーにアクセスする必要があります。

6. オブジェクト指向プログラミング

1. 独立したファイル

1. インターフェースファイル

インターフェイス ファイルは、クラス定義を含むファイルです。
クラス定義のインターフェイス ファイル *.h

2. 実装ファイル

実装ファイルにはメンバ関数の定義が含まれており、
メンバ関数の定義には実装ファイル *.cpp が使用されます。

3. アプリケーションファイル

アプリケーション ファイルには、オブジェクトをインスタンス化し、各オブジェクトに独自の操作を実行させる main 関数が含まれています。アプリケーションは
アプリケーション ファイル app.cpp を使用します。

2. 自主編集

上記 3 つのファイルをコンパイルして実行ファイルを作成することを独立コンパイルといいます

1. クラス定義のみを含むインターフェイス ファイルを作成します。

2. 実装ファイルを作成する

コンパイルが成功すると、.o オブジェクト ファイルが生成されます。

3. アプリケーションファイルを作成する

コンパイルが成功すると、.o オブジェクト ファイルが生成されます。

4. 2 つのオブジェクト ファイルをリンクして実行可能ファイルを作成します。

5. 走る

3. 複数の混入を防ぐ

#ifndef、#define、#endif
定義の繰り返しを防止します。ifndef がすでに定義されている場合、プリプロセッサは endif に直接ジャンプします。

4. 梱包

1. クラス設計

クラスの設計は開発者によって開発されます

2. クラスの利用

クラスの使用法は、ユーザーが

3. カプセル化の効果

カプセル化により、インターフェイス ファイルと実装ファイルが変更されないように保護できます

4. パブリックインターフェース

パブリックインターフェースは、メンバー関数の使用方法をユーザーに通知するために使用される関数宣言に基づいたテキストファイルであり、
API ドキュメントの形式は次のとおりです。

xxx関数
A::B()
xxx 関数、xxx を返すために使用されます

おすすめ

転載: blog.csdn.net/qq_37249793/article/details/130956784