development

確保したリソースの解放を人任せにしない

C++言語ならnewで確保したオブジェクトはdeleteで解放する。WindowsならGlobalAlloc()で確保したグローバルメモリはGlobalFree()で解放する。C言語ならmalloc()で確保したヒープメモリはfree()で解放する。 確保された剥き出しのポインタやグローバルハンド…

或るありがちな日

渡されたソースコードをビルドしてみたら、警告の嵐で、まあ些細な警告なんだけど、これに埋もれてヤバイ警告を見逃してしまうとマズいので、ひとつひとつ退治していたら、いろいろと困った書き方がしてあってついでに直しているおかげで、1日で済むと思って…

コメントが必要ないコードを書くよう努力しよう

前回のエントリは、このエントリを書くための、実は前振り。 不必要なコメントが有るより、必要なコメントが無い方が問題だと思うので、エントリを別にして、先に書いておくことにした。短いので、ぜひ先に読んでおいてほしい。 読んだ? さて、前回の要点は…

必要なコメントは必ず書こう

だって必要なんだから。 コメントは、コードではないというところが最大の欠点。 コードを書き換えても自動的に書き換わってくれるわけでないので、別途メンテナンスしてやらなければならない。 これを怠ると、コードとコメントが乖離してしまって、あとから…

ポインタと参照の使い分け その2

以前、どこかで読んだ、ポインタ/参照使い分けの、間違ったガイドライン。 函数の仮引数を定義するとき、函数内で変更される引数はポインタ、変更されない引数は参照にする。念のために書いておくと、ポインタや参照渡しは、オブジェクトのコピーが発生しな…

ポインタと参照の使い分け

ポインタと参照を、どう使い分けるのか分かりません、と質問されたことがあった。 C++言語において、いずれも他のオブジェクトを指し示すオブジェクトであって、性質が似ている。 似てるとはいえ違うわけで、そういうときは、その違いを比較して、使いどころ…

『C++ Coding Standards』

Effective C++ 第3版 C++言語を仕事にするなら、必ず読んでおくべきだけど、いやになるほど読んでない人も多い『Effective C++』の第3版邦訳が発売されているらしい。第2版なら持っているけど、5項目くらい追加されているとか。 ヨドバシカメラにあるかしら…

異なる矩形の相似の判定

社会人になると、数学なんてすっかり忘れてしまうのだけど、意外と使う場面もあって驚く。 新卒で配属された職場では、精度の判定に標準偏差σ(シグマ)を使っていた。いわれてみれば、σを3倍(3σ)すれば正規分布の99.6%までが含まれるわけで、精度判定に使える…

MFCのCWndから派生したクラスをテンプレートにする

普通にクラスをクラステンプレートにする方法については、説明しない。 MFCのCWndの派生ツリーにあるクラスから派生した、メッセージマップを持つクラスを、クラステンプレートにするにあたって必要になる小細工。以前、「そのうち書こう」とした話。 CWndか…

"development" カテゴリ新設

作ってからずいぶん放置していた "C++" カテゴリは、そのまま放置。 "development" カテゴリを新設する。 従来の "C++" カテゴリも、"development" カテゴリに追加する。 "C++" カテゴリへのリンクは削除。

C++の問題

『最良のDTPはDTPしないこと』 DTPを本格的にやっている人は、私が感じたよりずっと面白いのだろうな、というページ。 私はまあ、TeXというのを、学生時代使っていたので、結構面白かった。 このページに「ボゾビット」という用語が出てくる。 ぐぐってみた…

C++言語カテゴリ

思いついたこと、実際に使ったこと、その他C++に関連することをメモする。 車輪の再発明が多くなると思うが、創り上げるプロセス自体が目的なので、気にしないことにする。

非仮想メソッドをポリモーフィックに使う方法

以下の、Base::func() をポリモーフィックに使いたい。 class Base { public: void func(){ ... } }; class Derived : public Base { ... }; 案その1 仮想メソッドに変更してしまう。 class Base { public: virtual void func(){ ... } }; class Derived : p…