C言語でOOP*3
C言語でOOPするには機能の状態を保持する構造体を作ってその構造体のデータを元に処理する関数を書くのが一般的だと思う。*1
で、私がC言語でOOPみたいなのを調べているときにちょっと疑問に思ったこと。
なぜ、dkcAllocArcfour()みたいにでいちいちmallocでメモリ確保してポインタを返すか?
私の見解は以下。
例えば、構造体だけを用意して初期化
みたいなのは、初期化したものを
struct st obj;
init(&obj);
もう一回初期化して
状態遷移を乱すかもしれないから。
struct st obj;
init(&obj);
init(&obj);//プログラマのミス
私はこのように初期化を2回しても大丈夫なように実装するのが望ましいと考えるのでとりあえず、mallocで確保した領域を返すようにしている。
ちなみにC言語でOOPのお手本のようなglibはこの方式を用いている。
*1:例:glibや dkutil_c