実践 C++/CLI

非常に珍しいことに私の職場で使われている言語はC#ではなく、C++/CLIである。理由はまぁありがちな感じで。で、「これ読んどけ」と渡されたのが「実践 C++/CLI 極めるための〜」なわけだが、これが酷い。いや、C++/CLIというか.netに関する解説は良かったし、本の主題からしてみればあまり関係のない話だが、C++/CLIC++を比較する件のC++のコード及び解説について、C++を崇む者からしてみればあまりにお粗末である。書いた人はC++については全く知らないようだ。以下私の目についた覚えてる限りの間違いにツッコミ(多少恣意的かもしれないと免罪符を用意しておく、あとなんかC++/CLIが関係している解説も挙げる)。

  • 菱形継承は菱形の頂点に位置する基底クラスが仮想継承されていなければ、基底クラス部分が一つにまとめられることはない。
  • 演算子を多重定義する際は、元の意味から連想できるような機能を持たせるべきである。
  • C++のconstはコンパイル時定数とは限らない。
  • ポインタとハンドルは単純に置換できるものではない。ex) int^ i = 42;
  • templateとgenericsは根本的に動作原理も使い道も違う。

C++/CLIの本なのでC++について間違っていても問題ないのかも知れんが、それでは私の気が治まらないので書いた。すっきりした。