I am trying to comprehend virtual functions. How so I make my put() function virtual? What changes does that necessitate in the code?
#include <iostream>
#include <string>
using namespace std;
class Circle
{
public:
    Circle(double radius) {this->radius = radius; }
    void put() const {cout << "Radius = " << radius;}
private:
    double radius;
};
class ColoredCircle: public Circle
{
public:
    ColoredCircle(double radius, string color);
    void put() const;
private:
    string color;
};
ColoredCircle::ColoredCircle(double radius, string color)
    : Circle(radius), color(color) {}
void ColoredCircle::put() const
{
    Circle::put();
    cout << " Color = " << color;
}
int main()
{
    ColoredCircle redCircle(100., "red");
    Circle* circle1 = &redCircle;
    circle1->put();
    cout << endl;
    Circle circle(50.);
    Circle* circle2 = &circle;
    circle2->put();
    cout << endl;
    std::cin.get();
    return 0;
}
 
     
    