Inheritance
Overriding Methods
A derived class can provide its own version of a method from the base class.
Overriding Methods
overriding_methods.cpp
#include <iostream>
#include <string>
class Greeter {
public:
virtual std::string message(std::string name) {
return "Hello, " + name;
}
};
class ExcitedGreeter : public Greeter {
public:
std::string message(std::string name) override {
return "Hello, " + name + "!";
}
};
int main() {
std::string name = ;
Greeter plain;
ExcitedGreeter excited;
std::cout << "plain=" << plain.message(name) << std::endl;
std::cout << "excited=" << excited.message(name) << std::endl;
return 0;
}
#include <iostream>
#include <string>
class Greeter {
public:
virtual std::string message(std::string name) {
return "Hello, " + name;
}
};
class ExcitedGreeter : public Greeter {
public:
std::string message(std::string name) override {
return "Hello, " + name + "!";
}
};
int main() {
std::string name = ;
Greeter plain;
ExcitedGreeter excited;
std::cout << "plain=" << plain.message(name) << std::endl;
std::cout << "excited=" << excited.message(name) << std::endl;
return 0;
}
#include <iostream>
#include <string>
class Greeter {
public:
virtual std::string message(std::string name) {
return "Hello, " + name;
}
};
class ExcitedGreeter : public Greeter {
public:
std::string message(std::string name) override {
return "Hello, " + name + "!";
}
};
int main() {
std::string name = ;
Greeter plain;
ExcitedGreeter excited;
std::cout << "plain=" << plain.message(name) << std::endl;
std::cout << "excited=" << excited.message(name) << std::endl;
return 0;
}
overriding
An overriding method has the same name and compatible parameters as the base class method.