2008-12-01から1ヶ月間の記事一覧

マクロにしかできないこと 〜C++でマクロを使うべきな場面〜

C++では, #define で定数を定義するな, const TYPE によるグローバル変数(もしくは適当な名前空間に内包されたグローバル変数)を使え, #define でマクロ関数を定義するな,代わりに inline 関数を使え,みたいなことが言われる.これは確かにその通りだ…

構造体のインスタンスが const で修飾されているとき メンバに値を代入する方法 〜危険なコードと安全なコード〜

適当な構造体 TTest のインスタンスが const で修飾されているとき(const TTest x),そのメンバに値を代入したい,でもそのためだけにそのインスタンス(x)から const を外すのは嫌,という場合を考えよう.あるいは const メンバ関数(メンバ変数を変更し…

メモリの二重解放回避テク

メモリの二重解放とは, new などで確保したメモリ領域(ヒープ領域)を2回 delete などで解放することを言う. new と delete をきちんと対応させて書いていないときに起こる問題だ.特にクラスのメンバに動的確保したメモリへのポインタを含む場合にやって…