C++をSTLつきのC言語のように捉えてみる

C++とかってそのまんま正直に使ってると多重継承とか入るとすぐダウンキャストとかアップキャストとかできなくなったりして焦ったり騒いだりしなきゃなんないでめんどくさくねーっすか。時としてですが。
基本的にメモリ管理自分でやっちゃえば、オブジェクトの作成って、別にクラスとかをnewするとかしなくても、単に決めた場所に決められたバイト並びで情報置いちゃえば、それでもう、立派なオブジェクトなんだよな-。アセンブラでマイ構造体を管理するのと全く同じ気楽さがそこにはあるよね。
C++ だからって、何も必ずstruct やclass で、new しなきゃオブジェクト作れませんなんてことは全くないわけであって。ただそういう作り方したら、これってC++なのかなーって気がしてきちゃいそうだけどね。自分管理のメモリプールの中のマイ構造体なら簡単な継承だって作っちゃえばサポートできるわけだし、全ては自分管理でできちゃうわけなんすよねー。継承ツリーを上下するための妖怪系キャストの仕様とかにも別に苦しめられることもないし、あきらめたり気にする必要も全くないしね。もしかしたら知る必要もないかもなdynamic_castとか。
いっそC++本来の class とか使うのは、stlのコンテナだけにして、その他データ本体としてののマイオブジェクトは自分管理のマイメモリプールの中で、マイ構造体、マイ継承ルールで作っちゃえばいいのでは?でそいつらのポインタだけをSTLコンテナとかアルゴリズムとかで操作するわけです。。
(あ、アルゴリズムの機能部品単位をclass として作成するのはむしろアリ。ここで考えたいのは、結構無数に存在し、しかも複雑にその特性を継承したりされたりしうるデータ本体まで、何も言語がサポートしている、「classとして定義してnewするしくみ」にお行儀よく乗せる必要が本当にあんのかってこと。実際、結構世の中お行儀よい人たちで満たされているんだなーってたまに思う。。)
ましてSTLライブラリとかもあってあれだけコンテナやらアルゴリズムやらあるわけだからメモリプール管理なんて誰でも簡単に作れちゃうのではー?GCだってやりたきゃ簡単なやつをその中に作ってしまえばいいわけだよ。

  1. Small Object Allocator
  2. Mark and Sweep GC algorithm

「いやいや、classだとコンストラクタとかデストラクタとかあるから安全じゃないですか」とか言ったって、そんなのdelete呼ぶの忘れたら終わりだろとか、そもそもマイメモリ管理なんだから最後にプールごと一発解放しときゃいいんだよって話もあるし、そもそもそゆうの忘れる人とか面倒がる人って、他の言語に行ってるんじゃね?って気もするし。何より高速そうだよね。各種大容量データ系とかでは有効そうだよね。そうやって作ると。
C++C言語(←よい意味で。高速、コンパクト!)な部分をもっと活用することを忘れたくない気がします。