![]() |
От: | so5team | https://stiffstream.com |
Дата: | 13.08.25 12:31 | ||
Оценка: |
В конструкторах и деструкторах в C++ виртуальная диспетчеризация методов не работает
#include <iostream>
class base
{
virtual void f() { std::cout << "base::f" << std::endl; }
public:
base() {
std::cout << "base {" << std::endl;
f();
std::cout << "base }" << std::endl;
}
void call_f() {
std::cout << "===" << std::endl;
f();
}
};
class derived : public base
{
void f() { std::cout << "derived::f" << std::endl; }
public:
derived() {
std::cout << "derived {" << std::endl;
f();
std::cout << "derived }" << std::endl;
}
};
int main()
{
derived d;
d.call_f();
}
base {
base::f
base }
derived {
derived::f
derived }
===
derived::f