プライベート変数は、クラスのユーザーに複雑さと実装の詳細を隠す方法です。これはかなり良い機能です。しかし、なぜc ++ではクラスのヘッダーに入れる必要があるのか理解できません。これには2つの厄介な欠点があります。
- ユーザーからのヘッダーを乱雑にします
- 内部が変更されるたびに、すべてのクライアントライブラリの再コンパイルを強制します
この要件の背後に概念的な理由はありますか?コンパイラの作業を簡単にするだけですか?
struct foo{};
)は許可されていませんが、前方宣言(struct foo;
)は許可されています。