Exercise 02 学習ノート 🛠️

リソース管理と例外安全なクラス設計

1. 3つの重要なコンストラクタ

クラスのライフサイクルを管理する上で、以下の3つのコンストラクタの役割を正しく理解することが不可欠です。それぞれの動作をシミュレーションで確認しましょう。

インタラクティブ・デモ:コンストラクタの動作

ここに生成された`Array`オブジェクトの状態が表示されます。

2. 最重要テクニック:Copy-and-Swapイディオム

代入演算子を安全かつ簡潔に実装するための、C++における非常に有名なベストプラクティスです。メモリ確保の失敗や自己代入といった問題をエレガントに解決します。以下のデモでその流れを追ってみましょう。

ビジュアル解説:`a = b;` の裏側

オブジェクト `a`
_size: 3, _array: 0x100
オブジェクト `b`
_size: 5, _array: 0x200

3. 設計の原則:なぜこの実装なのか?

堅牢なクラス設計には、明確な役割分担が不可欠です。もしコピーコンストラクタと代入演算子が互いを呼び合うと「無限再帰」に陥り、プログラムはクラッシュします。その危険性をシミュレーションで体感してください。

シミュレーション:無限再帰の恐怖

悪い実装: コピーコンストラクタが代入演算子を呼び、代入演算子が(値渡しで)コピーコンストラクタを呼ぶ。

コールスタック: