【发布时间】:2014-01-31 07:00:10
【问题描述】:
我有一个包含一些函数的类(没有一个是虚拟的),另外 2 个类公开继承了该类。在两个子类中,我都覆盖了基类的相同功能。
在 main(位于同一个文件)中创建所有三个类的对象后,我用基类对象调用原始函数,用派生类对象调用覆盖函数。
我希望所有 3 个函数调用都能从基类运行原始函数(因为我没有在代码中的任何地方使用“虚拟”),但实际上我使该函数的每个版本都根据类在它被定义(3 个不同的版本)。
我的类 Base & Derived 如下:
struct Base
{
void foo();
};
struct Derived : Base
{
void foo();
};
主要:
int main()
{
Derived d;
d.foo();
}
如果不使用“虚拟”,我认为 d.foo() 应该运行 Base::foo()。
【问题讨论】:
-
请出示相关的C++代码。我们无法真正理解您的所有问题。
-
为什么不向我们显示代码而不是描述它? SSCCE (sscce.org) 将是理想的选择。
-
没有代码,不清楚你在问什么
-
很抱歉没有提供代码,这是我在工作中遇到的事情,我只是想出了什么不工作的主要想法,没有代码可以提供,不过,有一条评论“delnan”在这里不知何故消失了,他实际上是对的。
-
@theexplorer:如果没有其他方法,通常可以帮助您从中获取该想法并形成代码,然后将其绘制给自己。例如我的回答。
标签: c++ virtual overriding