C++ の深遠
C++ は以下のように変数宣言ができる。
std::string s("hoge");
初めて見たときは「なんじゃこりゃ」と思ったものですが、慣れとは怖いもので、今ではまったく違和感がないどころか、むしろ好んで使っている。
で、これの int 版は
int i(100);
と書くことができる。これも超違和感があったけど、まあ受け入れられる。
また、無名変数を作成するのにこんな書き方ができる。
size_t size = std::string("hoge").length();
これも Java の
int size = new String("hoge").length();
があらかじめ予備知識としてあったので違和感はない。
しかし、これが許されるとは思ってなかった。
int size = int(100);
これは要するに int にはメソッドが提供されないため、オブジェクトを作っただけ、ということになり、int size = 100; となんら変わらない(と思うけどアセンブラコードは検証してない)。
ちなみにこれは C++ であって、C はこんな書き方はできないので念のため。