What is a virtual function in C++?

A virtual function is chosen when the program runs, by the real type of the object. This is run time polymorphism.

#include <iostream>
#include <memory>

struct Animal {
    virtual ~Animal() = default;
    virtual void sound() const { std::cout << "...\n"; }
};
struct Dog : Animal { void sound() const override { std::cout << "Woof\n"; } };
struct Cat : Animal { void sound() const override { std::cout << "Meow\n"; } };

int main() {
    std::unique_ptr<Animal> a[] = {std::make_unique<Dog>(), std::make_unique<Cat>()};
    for (const auto& x : a) x->sound();
}
Output

Woof
Meow

See Polymorphism and Virtual Functions.


Learn more about the similar topics:
Tutorials
No Content Found.
Exercises & Assignments
No Content Found.
Interview Questions & Answers
No Content Found.