C++

構造体の暗黙のコンストラクタ?

C++

どうしても高速化したい処理があって久々にC++を書いています。 が、書いていてあれ?と思うことがあったので記事を書いてみます。サンプルコードは以下のようなものです。 #include<iostream> #include<string> #include<map> struct point { int x; int y; }; void disp(const poi</map></string></iostream>…

訓練されたC++プログラマ

C++

これに限らずデストラクタが非virtualな多態的に使うつもりはない基底クラスはコンストラクタ・デストラクタをprotectedにするのがよい(そしてunary_functionもそうすべきだった)ということは確かC++ Coding Standardsに書いてあったと思います。なぜこれ…

テンプレートメタプログラミングでアッカーマン関数を実装してみよう

C++

まったくちがう。節約の問題ではない。 テンプレートメタプログラムの視点からはvtblは『邪魔』なことがある。 実行時のスピードのパフォーマンスの話ではなくて、存在そのものが邪魔になる。 vtblがない方がいいのではなくて『存在してはならない』パターン…

std::unary_functionの存在意義がよくわからなくなった。

C++

前回のエントリで ただ、この例のstd::unary_functionとかstd::binary_functionとかは本当にvirtualデストラクタがない設計でいいの?という点はちょっと疑問でした。例えばstd::unary_functionの派生クラスとして、「環境への参照を持つ関数(イメージとして…

C++では基底クラスにvirtualデストラクタを書こう

C++

(追記あり/再追記あり)ブクマ経由で、C++で演算子オーバーロードしたときの演算子決定基準について調べたというのを見たのだけど、書いてあるサンプルコードが演算子オーバーロード以前にちょっとダメだった。 昔書いたテストコードと書いてあるので、今は分…