1
class Game {
  class Other {}; // Nested class
  // Automatic type conversion:
  operator Other() const {
    cout << "Game::operator Other()\n";
    return Other();
  }
};    
class Chess : public Game {};
void f(Game::Other) {}
int main()
{
    Chess d;
    f(d);
}    

「C++ で考える」の第 14 章 - 自動的に継承されない関数を読んでいます。上記のコード フラグメントは、Eckel によって提供された例です。そしてエッケルは言った:

「オブジェクトの作成を処理する関数の書き換えに関するこれらすべての規則のために、自動型変換演算子が継承されていることは最初は少し奇妙に思えるかもしれません。これらの部分はまだ Game から派生したものにあり、型変換演算子はまだ有効です (実際に再定義したい場合でも)。」

エッケルが何を言おうとしているのか理解できない。誰かがそれをもっと詳しく説明できますか?

ありがとう

4

1 に答える 1

4

彼は、他の同様のものとは異なり、型変換演算子派生クラスによって自動的に継承されると言っています。

Otherこの振る舞いが合理的である理由についての彼の議論は、からを構築できれば、「である」もの(つまり派生クラス)からGameも構築できるというものです。OtherGame

于 2013-03-02T17:52:31.020 に答える