rendered paste body#include <iostream>class Animal{ int i;public: Animal(int ii): i(ii) {}; Animal(const Animal &a): i(a.i){} void move() const{std::cout << "Animal::move\n";}};class Dog : public Animal{ int i;public: Dog(int ii): i(ii), Animal(ii) {} Dog(const Dog &d): Animal(d), i(d.i) {} virtual void move() const{std::cout << "Dog::move\n";}};class Labrador : public Dog{ int i;public: Labrador(int ii): i(ii), Dog(ii) {} Labrador(const Labrador &l): Dog(l), i(l.i) {} void move() const{std::cout << "Labrador::move\n";}};void f(const Animal &a) {a.move();}void g(const Dog &d) {d.move();}void h(const Labrador &l) {l.move();}int main(){ Labrador **const l = NULL; Labrador c(2); std::cout << "Labrador as animal:\n"; f(c); std::cout << "Labrador as dog:\n"; g(c); std::cout << "Labrador as Labrador:\n"; h(c);}