C++
Beginner
1 min read
Single Inheritance and Base Class Constructors
Example
#include <iostream>
#include <string>
// Base class
class Animal {
public:
explicit Animal(const std::string& name, int age)
: name_(name), age_(age) {
std::cout << "Animal constructed: " << name_ << "\n";
}
// Virtual destructor — essential for polymorphic use
virtual ~Animal() {
std::cout << "Animal destroyed: " << name_ << "\n";
}
std::string name() const { return name_; }
int age() const { return age_; }
virtual void speak() const {
std::cout << name_ << " makes a sound.\n";
}
protected:
std::string name_;
int age_;
};
// Derived class
class Dog : public Animal {
public:
Dog(const std::string& name, int age, const std::string& breed)
: Animal(name, age) // call base constructor explicitly
, breed_(breed)
{
std::cout << "Dog constructed: " << breed_ << "\n";
}
~Dog() override {
std::cout << "Dog destroyed: " << name_ << "\n";
}
void speak() const override {
std::cout << name_ << " barks!\n";
}
std::string breed() const { return breed_; }
private:
std::string breed_;
};
int main() {
Animal* a = new Dog("Rex", 3, "Labrador");
a->speak();
std::cout << "Breed: " << static_cast<Dog*>(a)->breed() << "\n";
delete a; // calls Dog::~Dog then Animal::~Animal (virtual)
return 0;
}