這是我的問題的最小例子。我有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
。 現在回答這個問題:因爲foo
- 類B
的方法是完全獨立的(不使用變量或其他方法B
或A
),所以我想foo
變爲靜態。基本上我想用B::foo()
與foo
聯繫。
聲明foo
靜態不起作用,因爲foo
實現從A
虛方法。你如何處理這種情況?
你想通過使函數靜態獲得什麼好處?爲什麼不把它保持原樣呢?另外,請看看:http://stackoverflow.com/questions/2721846/alternative-to-c-static-virtual-methods?rq=1 – dreamzor
如果函數應該是靜態的,爲什麼它是虛擬的?如果它需要是虛擬的,[它顯然不能是靜態的](http://stackoverflow.com/q/1820477/3425536)。 – emlai
@dreamzor這只是一個簡單的例子。我的實際類有很大的構造函數,我不想打電話。 – user38034