C++相談室 part98
■ このスレッドは過去ログ倉庫に格納されています
0029デフォルトの名無しさん
2012/10/10(水) 21:09:39.721. コンパイル時間を縮める
2. private メンバをヘッダから隠せる
これが pimpl の意義
通常は private メンバを変更しただけで
そのヘッダをインクルードしている全ての .cpp が再コンパイルされる
private メンバなんて外部から見えないのだから、これは非常に不合理だと言える
pimpl を使えば private な実装が全て1つの .cpp 内に収まるので
private な実装を変更する限りにおいては1つの .cpp が再コンパイルされるだけで済む
また、private な実装を他から隠匿出来るという点が
商業的に役に立つ場合がある
ただ、pimpl 以外にも似たような事を行う方法はある
まずインタフェースだけのクラスを作って、
そのクラスを継承して実装し、その派生クラスの生成関数だけを外部に公開する、というもの
両者は1, 2の目的を満たしているという点でよく似ているけど、
生成したメモリを管理する責任の所在が異なるというのと、
あとはここから更に継承したいという場合に違いが出てくる
■ このスレッドは過去ログ倉庫に格納されています