(под «нечистой виртуальной функцией», я имею в виду чистые виртуальные функции, которые также имеют реализации (как описано по адресу 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++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как я могу отличить чистую и нечистую поверхность металла детали с помощью EmguCV?
Anonymous » » в форуме C# - 0 Ответы
- 10 Просмотры
-
Последнее сообщение Anonymous
-