转换运算符"still valid"派生类是什么意思
What does it mean that the conversion operator is "still valid" in a derived class
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
。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- C++避免重复声明的语法是什么
- 派生类销毁的最佳实践是什么
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 静态自动 constexpr t = { "red" , "black" , "green" } 是什么类型;派生到?
- 调用不属于基类的派生类函数的最佳方法是什么?
- 抽象类的需求是什么?为什么要通过其基类访问派生类方法?在C++
- 如果私有虚拟函数被覆盖为派生类中的公共函数,那么问题是什么
- 派生类对象是否包含基类的私有成员?它在记忆中是什么样子的
- 根据用户输入创建相应的派生类的最佳实践是什么?
- 从派生类实现基类构造函数专用化的替代方法是什么
- 类派生1是什么:基{};意味 着
- 拥有所有派生自同一基类的类实例集合的最佳方法是什么?
- 如何派生模板函数?或者这个场景的首选方法是什么
- 父类有虚方法而派生类没有虚方法的后果是什么?
- 在派生类中处理派生对象集合的最佳方法是什么?
- 将基类构造函数强制转换为派生类构造函数是什么意思?
- 转换运算符"still valid"派生类是什么意思
- 将基对象返回到向上转换的派生类的最合适方法是什么
- 在c++中跟踪父类有多少个派生类的最好方法是什么?