假设我们有以下代码:
<wm:WatermarkBox WatermarkBackColor="White" />
它将为我们提供以下输出: class Base
{
public:
virtual void foo() const
{ cout << "In Base::foo\n"; }
}
class Derived : public Base
{public:
virtual void foo()
{ cout << "In Derived::foo\n"; }
}
void main()
{
Base* b = new Derived();
b->foo();
delete b;
}
。
现在假设我想获得-在不更改主要功能的情况下-以下输出代替了上面给出的输出:
In Base::foo
据我了解,我应该重写基础函数的 foo(),以获取方法的输出
foo()在继承类(“派生”类)中。
但是问题在于,在那种情况下,我不能使用命令In Derived::foo
,因为基中的方法定义为constant,而在另一类中则不是。
那么,如果我应该重写该方法,该怎么办?
答案 0 :(得分:0)
为了覆盖基类的功能void foo() const
,必须在派生类中声明功能void foo() const
。您已经声明了函数void foo()
(注意,缺少const
),因为它具有不同的声明,所以它不会覆盖基函数。
那么,如果我应该重写该方法,该怎么办?
添加缺少的const
限定词。
P.S。程序中的其他错误:
main
必须返回int
。