- スレを勃てるまでもないC/C++の質問はここで 24 [転載禁止]©2ch.net
294 :デフォルトの名無しさん[]:2016/02/14(日) 12:46:34.08 ID:VLtYVTYt - class Transaction {
public: Transaction() { logTransaction(); }; virtual void logTransaction() { cout << "Transaction" << endl; }; virtual void logTransaction() const { cout << "const Transaction" << endl; }; }; class BuyTransaction : public Transaction { public: BuyTransaction() { logTransaction(); }; void logTransaction() { cout << "Buy" << endl; }; void logTransaction() const { cout << "const Buy" << endl; }; }; int main() { const BuyTransaction b; return 0; } と書いた場合、基底&派生クラスともに非constな logTransaction()が呼ばれてしまいます。 const、非constオブジェクトの生成に関して処理を分けることは出来ないのでしょうか? VS2015 VC++ と Mingw64 g++ 5.3.0 とも同じ動作になりました。
|
- スレを勃てるまでもないC/C++の質問はここで 24 [転載禁止]©2ch.net
297 :294[]:2016/02/14(日) 21:17:33.93 ID:VLtYVTYt - 直接的に処理を分けることは無理みたいですね。
お察しが付くかもしれませんが、上記ソースコードは スコット・メイヤーズさんのEffectiveC++第3版の9項からのものです。 説明では基底クラスのTransaction中では void logTranslation() const = 0; と純粋仮想関数になっているのですが、サンプルソースを適当に変えて挙動を みていたら、このことに気が付きました。 両名の方、レスありがとうございました。
|
- 【GPGPU】くだすれCUDAスレ part7【NVIDIA】 [転載禁止]©2ch.net
487 :デフォルトの名無しさん[sage]:2016/02/14(日) 21:47:51.57 ID:VLtYVTYt - Geforceで科学技術計算なんてことあるの?
2秒間の壁や1週間も100%負荷で連続使用したら過熱して壊れそう。
|