問題

今日はC++のテストを受けました。
その中で間違えてしまった部分を書きます。

プログラムコードとデータを組み合わせることによって作成されるものは?
  1. オブジェクト
  2. インターフェイス

正解は、オブジェクトです。
インターフェイスは、そのクラスを特徴付けるものとして表現します。

定義にはなにも書かれていないクラスAを作成した。
このクラスはコンパイルによって、オブジェクトと同様に扱えるように宣言が自動的に追加される。
constアドレス演算子・非アドレス演算子と、さらに3つの関数と1つの演算子である。
残りの3つの関数と、1つの演算子とはなにか。

正解は、デフォルトコンストラクタ、デストラクタ、コピーコンストラクタ、代入演算子です。
最初は代入演算子って書いたのに、スコープ解決演算子に変えてしまいました…凡ミスとはこのことですね。

以下のような代入は危険。なぜか?
A a = new C;
D* d = a;
クラスAは基底クラスで、クラスBに継承。クラスCはクラスB、クラスDもクラスBを継承している。

正解は、C型オブジェクトとD型オブジェクトの間には継承関係がない。
クラスAをD型オブジェクトに代入するのが危険と思っちゃいました…ありがち間違ってはいないと思うんですけど……