cat virtuals.cpp
class Animal { public: virtual void voice(){ std::cout << "Йа живтоне" << std::endl; } Animal(){ this->voice(); } }; class Cat: public Animal { public: virtual void voice(){ std::cout << "Йа котэ" << std::endl; } Cat(): Animal() {} }; int main(){ std::cout << "Создаём животное: " ; Animal animal; std::cout << "Создаём котейку: "; Cat cat; return 0; }
g++ -ansi -pedantic -Wall -o virtuals virtuals.cpp && ./virtuals
Создаём животное: Йа живтоне Создаём котейку: Йа живтоне
Вопрос: как заставить конструктор родителя вызывать виртуальный метод как виртуальный, перегруженный в потомке, а не как прибитый гвоздями к конкретному родительскому классу?
Буду благодарен за ссылку на нужный пункт N3337.