作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有类 Foo
和一个纯虚函数 say
和类 Bar
有一个方法 say
和我想实现继承自 Foo
和 Bar
的类 FooBar
,Foo::say
被 覆盖>酒吧::说
。我可以做如下事情:
#include <iostream>
class Foo {
public:
virtual void say() = 0;
};
class Bar {
public:
void say() {
std::cout <<"I am a Bar." << std::endl;
}
};
class FooBar : public Foo, public Bar {
public:
void say() override {
Bar::say();
}
};
int main() {
FooBar foobar;
foobar.say(); // I want to print "I am a Bar."
return 0;
}
但这只是使 FooBar::say
成为调用 Bar::say
的函数。这是一个非常小的烦恼,但有没有办法让 FooBar
直接用 Bar::say
覆盖 Foo::say
?让 FooBar::say
inline
可靠地完成这个吗?我意识到我可以使 Bar
继承自 Foo
并且 FooBar
仅继承自 Bar
但这不适合此示例类似于实际项目。
最佳答案
#include <iostream>
class ISay {
public:
virtual void say() = 0;
};
class Bar: public virtual ISay {
public:
void say() override {
std::cout <<"I am a Bar." << std::endl;
}
};
class FooBar : public virtual ISay, public Bar {};
int main() {
FooBar foobar;
foobar.say(); // Prints "I am a Bar."
}
这在虚拟继承中称为支配。
有些人认为,为了支持这一点,应该始终虚拟地继承接口(interface)。
虚拟继承有两个主要成本(可能更多):
this
指针。关于c++ - 用并行基类方法覆盖纯虚方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48907742/
我有一个特别的问题想要解决,我不确定是否可行,因为我找不到任何信息或正在完成的示例。基本上,我有: class ParentObject {}; class DerivedObject : publi
在我们的项目中,我们配置了虚 URL,以便用户可以在地址栏中输入虚 URL,这会将他们重定向到原始 URL。 例如: 如果用户输入'http://www.abc.com/partner ',它会将它们
我是一名优秀的程序员,十分优秀!