Function templates

Suppose we have another class that is derived from the Animal class, for instance, Cat. We are going to make a function that will invoke the GetName() and MakeSound() methods for both the Dog and Cat instances. Without creating two separated functions, we can use the template, which is shown as follows:

// Function_Templates.cbp#include <iostream>using namespace std;class Animal{protected:    string m_name;public:    Animal(string name) : m_name(name)    {    }    // The interface that has to be implemented    // in derived class    virtual string MakeSound() = 0;    string GetName()    {        return m_name;    }};class Dog : public Animal{public:    // Forward the constructor arguments    Dog(string name) : Animal(name) {} // Copy assignment operator overloading ...

Get C++ Data Structures and Algorithms now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.