作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我对虚拟事件有以下覆盖:
void derivedClass::method(event)
{
// my stuff
baseClass::method(event); // <--
}
//<--- 行的作用是什么?它叫什么?我认为它不会调用基类的方法,因为它是虚拟的(所以没有主体)
最佳答案
正如您所建议的,它调用基类的方法。它是虚拟的这一事实仅意味着它可以被覆盖并且仍然可以从指向基类的指针/引用访问派生类的方法。
这样做的原因很容易通过一个例子看出:
class Base {
public:
virtual void foo() {
/* do some generic stuff */
}
};
class Derived : public Base {
public:
void foo() {
/* do some specific stuff */
/* if you also want to do the generic stuff,
you can call the same method from the base class. */
Base::foo();
}
}
您可能不想为 Derived
类做通用的事情。然后您只需删除对 Base::foo()
的调用即可。
这里有一个很好的引用 virtual methods .
关于C++ 基类::重写虚函数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11549957/
我有一个特别的问题想要解决,我不确定是否可行,因为我找不到任何信息或正在完成的示例。基本上,我有: class ParentObject {}; class DerivedObject : publi
在我们的项目中,我们配置了虚 URL,以便用户可以在地址栏中输入虚 URL,这会将他们重定向到原始 URL。 例如: 如果用户输入'http://www.abc.com/partner ',它会将它们
我是一名优秀的程序员,十分优秀!