2009-08-18から1日間の記事一覧

例外を発生させないnew(nothrow)演算子

ロベールのC++入門講座 05-15newでメモリを動的確保した場合、非常に稀ではありますがメモリ確保に失敗する場合があります。メモリ確保に失敗するとどうなるかは以前例外機構の勉強の時にチラッと出てきましたが、bad_allocという例外を発生させます。しかし…

トリグラフシーケンス

ロベールのC++入門講座 05-14別名「3文字表記」というC++の構文で使用される記号の代価記号のこと。例えば「{」は「?? #include <iostream> using namespace std; int main () ??< cout << "aaaa" << endl; return 0; ??> $ main aaaaなんか凄いですねこれ。ちゃんとコ</iostream>…

関数オブジェクト(ファンクタ)

C++

http://www.geocities.jp/ky_webid/cpp/library/015.html関数オブジェクトのお話です。パッと見はややこしそうですが、なんとかなると思います。まずは関数オブジェクトが単なる()演算子のオーバーロードであることを理解した上で、実装してみます。 #includ…

int i;とint(i);が違う挙動になるケース

C++

http://d.hatena.ne.jp/pknight/20090817/1250503320 http://d.hatena.ne.jp/pknight/20090817/1250505682 の続きです。色々試していて違いがある場合があったので記録。というかまだC++の基礎学習してる最中なのに何だか変に深いところまで覗き込んでしまっ…

RVOによるコピーコンストラクタの最適化

C++

前回の記事でコメント欄にてRVO(Return Value Optimization)というものを教えていただきました。要はコンパイラが最適化してオブジェクトへの代入なのにコピーコンストラクタを通さずにそのまま代入できるようにしてくれるものです。使い方は簡単です。クラ…