2009-10-03 (土)
Webシステム開発に使われる言語にこそ,まともな型チェックが必要だと思う.明らかに間違った引数を与えているのに,テストしてみる時まで気づかないなんて.
あと,クライアントから渡されたURLの引数とかが,printで標準出力に出せたり,SQLなどの文字列に埋め込むことが出来る型に入っているというのは,ちょっとおかしいと思う.せめて,PerlやRubyの汚染モードみたいなのが無いと危険だと思う.
PHPへの愚痴です.
*お酒飲んだら体調悪くなった
sangoが東京にいるらしいので,meshi,goto,safii,gazyuあたりで集まって上野のキリンシティで飲む.
*オブジェクトは参照で
C++で
class Test : public Object<Test> { public: Test(Test *o):Object(o){} Test():Object(self){} struct _data{ protected: string s; public: _data(){cout << "new Test" << endl;} ~_data(){cout << "delete Test" << endl;} int b; }; Test(string s) {self->s=s;self->b=0;} void hello(){ cout << self->s << " " << self->b << endl;} }; int main() { Test t = new Test("world"); { Test b = t; b->b = 123; t->hello(); cout << t->refs << endl; } cout << t->refs << endl; return 0; }
出力
new Test world 123 2 1 delete Test
sizeof(Test)=4です.省メモリ.Testクラスをもう少しきれいに書けるようにしたいなぁ.
最初は,実体である_Testクラスから参照型のTestクラスを作る方針だったけど,コンストラクタを全部書かないといけないのがつらくてこっちに.はやくコンストラクタの委譲ができるようになれば,いいのになぁ.
仕方ないから,std::auto_ptrやsmart_ptrで我慢するか.