У меня есть некоторый код, который кажется 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;
}
Теперь это выводит конечно Base::test()
, однако я хочу вывести Derived::test()
без использования вызовов виртуальных функций и используя различные обозначения для перегрузки функции: Derived::test
.
Кто-нибудь знает, можно ли этого достичь?
Если я понимаю, что u corrent u хочет, чтобы d.test2() вызывал непосредственно d.test(), правильно? По моим сведениям, нет никакого способа сделать это без виртуальных функций. Их цель заключается именно в этом. –
Да, без перегрузки 'Base :: test2()', без использования различной нотации для 'Derived', а также без потери производительности (например, вызовы виртуальных функций). – Tim
Вы можете изменить 'Base'? –