0
假設我們有一個類靜態成員函數調用的語義虛函數時
class Abstract {
Abstract(void);
virtual ~Abstract(void) = 0;
virtual void VirtualFunction(void) = 0;
static void CallsVirtual(void) {
VirtualFunction();
}
};
class Concrete : public Abstract {
Concrete(void) {}
~Concrete(void){}
virtual void VirtualFunction(void) {/* Do virtual function-y stuff */}
};
int main(void) {
Concrete _concrete;
Abstract& _abstractReference = _concrete;
_abstractReference.callsvirtual();
}
哪個虛成員函數當一個基類的靜態成員函數通過基類指針調用派生類中被調用?
這是我所期望的,因爲靜態成員函數沒有這個指針 –
你可以在靜態函數中訪問非靜態成員。但是你需要一個明確的對象來做到這一點。 –
所以如果CallsVirtual把一個基類指針作爲參數,我想我可以規避它,例如CallsVirtual(Abstract&that){that.VirtualFunction; }但是這使得它首先使它靜止=) –