#include <iostream>
struct Base {
virtual void print() const {
std::cout << "Base" << std::endl;
}
};
struct Derived: public Base {
virtual void print() const {
std::cout << "Derived" << std::endl;
}
};
void f1(Base obj) {
obj.print();
}
void f2(const Base* p_obj) {
p_obj->print();
}
void f3(const Base& obj) {
obj.print();
}
int main() {
Derived obj;
f1(obj);
f2(&obj);
f3(obj);
return 0;
}