转换运算符"still valid"派生类是什么意思

What does it mean that the conversion operator is "still valid" in a derived class

本文关键字:是什么 派生 意思 valid 运算符 still 转换      更新时间:2023-10-16
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给出的一个例子。Eckel说:

"因为所有这些关于重写处理函数的规则对象创建,一开始可能看起来有点奇怪继承自动类型转换操作符。但事实并非如此不合理——如果游戏中有足够的部件来制造另一个对象,这些部分仍然存在于任何从Game和派生的东西中类型转换操作符仍然有效(即使您可能在事实想重新定义它)。"

我不明白埃克尔想说什么。有人能解释得更详细一点吗?

谢谢

他的意思是,与其他类似的东西不同,类型转换操作符被派生类自动继承的。

他对为什么这种行为是合理的论证是,如果你可以从Game构造一个Other,你也可以从任何"是"Game(即派生类)构造一个Other