在某些代码中覆盖方法的方式是什么?
what is the way of overriding a method in some code
假设我们有以下代码:
class Base
{
public:
virtual void foo() const
{ cout << "In Base::foon"; }
}
class Derived : public Base
{public:
virtual void foo()
{ cout << "In Derived::foon"; }
}
void main()
{
Base* b = new Derived();
b->foo();
delete b;
}
它将为我们提供以下输出:In Base::foo
。
现在假设我想获得 - 不更改主函数 - follwing输出,而不是上面给出的输出:
In Derived::foo
据我了解,我应该覆盖基地中的函数 foo(),以获取方法的输出 foo()在"派生"类的继承类中。但是问题在于,在这种情况下,我不能使用命令override
,因为基数中的方法定义为常数,在其他类中,它不是。
那么,如果覆盖该方法,我该怎么办?
为了覆盖基类的函数void foo() const
,您必须在派生类中声明函数void foo() const
。您已经声明了函数void foo()
(请注意,const
的缺乏),该功能不会覆盖基础中的函数,因为它具有不同的声明。
那么,如果覆盖该方法,我该怎么办?
添加缺少的const
限定符。
P.S。您程序中的其他错误:
-
main
必须返回int
。 - 班级定义必须以分号结束。
- 除非基础的击退器虚拟删除底函数, ,
相关文章:
- 使用QQuickFramebufferObject时同步数据的最佳方式是什么
- 在reactor中存储eventHandlers的最佳方式是什么
- 引用 std::any 或 not_yet_in_std::whatever 的惯用方式是什么?
- 在C++中,建议通过数组循环的方式是什么?
- DLL共享数据的推荐方式是什么
- 等待线程的最佳方式是什么
- 将uint8_t*buffer和size_tbufferlen从C++传递到C中的API函数的最佳方式是什么
- 只显示片段着色器的最佳方式是什么
- 复制文件的最佳方式是什么,以便我可以在复制过程中轻松取消复制?
- 在 c++ 中打印到控制台的最佳方式是什么?
- 在Qt Creator中应用代码更改的快捷方式是什么?
- 在C 中超负荷构造函数的合适方式是什么
- 执行随机开关函数的QT方式是什么连续两次使用相同情况的方法
- 在某些代码中覆盖方法的方式是什么?
- 为单个函数同时声明多个变量的最佳方式是什么
- Qt中数据类(模型)和视图/控制器类之间的数据通信的正确方式是什么
- 在c++中存储一个对象或不存储对象的首选方式是什么
- 在C 项目中包含库的不同方式是什么?
- 解释"Bit String"的最佳方式是什么
- 计算差异数据并通过网络发送的最佳方式是什么