Маленький пример с виртуальными функциями.
#include <iostream>
using namespace std;
class A
{
public:
void f()
{
cout<<"a"<<endl;
}
void v()
{
cout<<"A"<<endl;
}
};
class B: public A
{
public:
void f()
{
cout<<"b"<<endl;
}
virtual void v()
{
cout<<"B"<<endl;
}
};
class C: public B
{
public:
void f()
{
cout<<"c"<<endl;
}
void v()
{
cout<<"C"<<endl;
}
};
void u(A& a)
{
a.f();
a.v();
}
void v(A* a)
{
a->f();
a->v();
}
void x(B& b)
{
b.f();
b.v();
}
void y(B* b)
{
b->f();
b->v();
}
void z(B b)
{
b.f();
b.v();
}
int main(int argc, char* argv[])
{
B b;
C c;
u(b); u(c); // aA aA
v(&b); v(&c); // aA aA
x(b); x(c); // bB bC
y(&b); y(&c); // bB bC
z(b); z(c); // bB bB
return 0;
}
Комментариев нет:
Отправить комментарий