#include <iostream.h>
class
A
{
public
:
virtual
void
print(
void
)
{
cout<<
"A::print()"
<<endl;
}
};
class
B:
public
A
{
public
:
virtual
void
print(
void
)
{
cout<<
"B::print()"
<<endl;
};
};
class
C:
public
B
{
public
:
virtual
void
print(
void
)
{
cout<<
"C::print()"
<<endl;
}
};
void
print(A a)
{
a.print();
}
void
main(
void
)
{
A a, *pa,*pb,*pc;
B b;
C c;
pa=&a;
pb=&b;
pc=&c;
a.print();
b.print();
c.print();
pa->print();
pb->print();
pc->print();
print(a);
print(b);
print(c);
}
|
//总结:
|
/*子类继承父类,父类的虚函数被子类的所重写。<br>基类对象调用它的函数,执行基类的函数。子类对象调用它的函数(重载父类的),执行子类的函数。<br>一个基类指针,指向基类对象,通过指针调用函数,执行其基类自身的函数。一个基类指针,指向子类对象,通过指针调用函数,执行子类的函数。<br>一个子类对象被传入形参类型为基类的函数中,所执行的函数,调用的是基类的函数。*/
|