(под «нечистой виртуальной функцией», я имею в виду чистые виртуальные функции, которые также имеют реализации (как описано по адресу 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