調用函數我有一些代碼,這似乎similair這樣:源自範圍
#include <iostream>
class Base {
public:
void test() {
std::cout << "Base::test()" << std::endl;
}
void test2() {
test();
}
};
class Derived : public Base {
public:
void test() {
std::cout << "Derived::test()" << std::endl;
}
};
int main() {
Derived d;
d.test2();
return 0;
}
現在這種輸出ofcourse Base::test()
,但是我希望它輸出Derived::test()
不利用虛函數的調用和使用稱爲:Derived::test
的函數過載的不同符號。
有人知道這是否有可能實現?
如果我明白你的意思,你想讓d.test2()直接調用d.test(),對嗎?據我所知,沒有虛擬功能就沒有辦法做到這一點。他們的目的正是爲了這種情況。 –
是的,沒有重載'Base :: test2()',對Derived'沒有使用不同的表示法,也不會失去性能(例如虛函數調用)。 – Tim
你允許修改'Base'嗎? –