Почему мой деструктор не может вызвать нечистую виртуальную функцию? [дублировать]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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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