1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| #include <iostream>
struct base
{
virtual void do_something() const
{
std::cout<<"base::do_something\n";
}
void do_something_else() const
{
std::cout<<"base::do_something_else\n";
}
};
struct derived : base
{
virtual void do_something() const
{
std::cout<<"derived::do_something\n";
}
void do_something_else() const
{
std::cout<<"derived::do_something_else\n";
}
};
void call(base const& rb)
{
rb.do_something();
rb.do_something_else();
}
int main()
{
derived d;
call(d);
return 0;
} |