【发布时间】:2015-10-31 18:14:00
【问题描述】:
这是我的问题的一个最小示例。我有 2 个类,一个是抽象的,另一个是派生的。
#include <iostream>
class A
{
public:
virtual void foo() = 0;
void bar() {
foo();
std::cout << "BAR" << std::endl;
}
};
class B : public A
{
public:
void foo() {
std::cout << "FOO" << std::endl;
}
};
int main()
{
B b;
b.bar();
}
代码编译并给出预期结果:FOO\nBAR。
现在问题来了:因为B 类的foo 方法是完全独立的(不使用变量或B 或A 的其他方法),我希望foo 变为静态。基本上我想用B::foo() 打电话给foo。
声明foo static 不起作用,因为foo 实现了来自A 的虚方法。这种情况如何处理?
【问题讨论】:
-
您希望通过将函数设为静态来获得什么好处?为什么不让它保持原样?另外,看看那个:stackoverflow.com/questions/2721846/…
-
如果函数真的应该是静态的,为什么它是虚拟的?如果需要虚拟,it clearly cannot be static.
-
@dreamzor 这只是一个小例子。我的实际类有相当大的构造函数,我不想调用。
标签: c++ oop static abstract-class