狠狠撸

狠狠撸Share a Scribd company logo
pimplイディオムについて調査した件
Usushiki
pimpl
C++で使われるイディオム(アルゴリズム)
というわけで、
笔颈尘辫濒イディオムについて调査した件
もう知っている方は、
笔颈尘辫濒イディオムについて调査した件
Pimplイディオム
Pimplは、”ピーインプル” と呼ばれることが多い。
意味としては、 Pointer To Implementation(実装へのポインタ)
Private Implementation(実装の隠蔽)
どちらかといえば、上の意味で受け取られることが多い。
しかしてその実態は、下のほうらしい???。
(↑ゲームプログラマのためのC++より)
どんなことができるの?
その1 クラスのインターフェース部分と実装部分を分離できる
その2 不要なヘッダファイルのインクルードを減らせる
その4 コンパイル時間を減らせる(抑制できる)
その3 その1により、再コンパイルする必要がなくなる
こんな時使える
?ヘッダファイルの中にメンバ変数がごちゃごちゃしているとき
?publicとprivateのメンバ(変数、関数)を分離させたいとき
?↑が原因でコンパイルの時間が長くなってきたとき
実装
今回は以前作ったWindowクラスに適応してみる。
pImplイディオム適応 + リファクタリング 後
初期化関数とメンバ変数をpImplクラス内に隠蔽
ヘッダ内にインターフェースとイディオムのみに
なった
Window.hpp
実装部分
Window.cpp
pImplクラスはcppで実装する。
実装部分(イディオムの生成)
pImplクラスオブジェクトはWindowクラスのコンストラクタで生成する。
Window.cpp
イディオム内のメンバへのアクセス
Window.cpp HandleMessage関数
m_pImpl->(メンバ)の形でアクセスする
まとめ
メリット
?クラスのインターフェース部分と実装部分を分離できる
?不要なヘッダのインクルードをなくせる
?コンパイル時間の短縮(抑制)
デメリット
?間接参照のオーバーヘッドが発生する
ご清聴ありがとうございました

More Related Content

笔颈尘辫濒イディオムについて调査した件