Почему мой деструктор не может вызвать нечистую виртуальную функцию? [дублировать]C++

Программы на C++. Форум разработчиков
Anonymous
Почему мой деструктор не может вызвать нечистую виртуальную функцию? [дублировать]

Сообщение Anonymous »

(под «нечистой виртуальной функцией», я имею в виду чистые виртуальные функции, которые также имеют реализации (как описано по адресу http://www.gotw.ca/gotw/031.htm).)образное/> Подумайте о следующем коде:
#include

class AbstractBase
{
public:
virtual ~AbstractBase() {
f(); // 2A. Prints: AbstractBase::f
g(); // 2B. Prints: AbstractBase::g

AbstractBase* p = this;
p->f(); // 3A. Prints: AbstractBase::f
p->g(); // 3B. terminates (pure virtual call)
}

virtual void f();
virtual void g() = 0;
};

void
AbstractBase::f()
{
std::cout

Подробнее здесь: https://stackoverflow.com/questions/796 ... l-function

Вернуться в «C++»