类的继承和虚函数

#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); 
}
//总结:
/*子类继承父类,父类的虚函数被子类的所重写。
基类对象调用它的函数,执行基类的函数。子类对象调用它的函数(重载父类的),执行子类的函数。
一个基类指针,指向基类对象,通过指针调用函数,执行其基类自身的函数。一个基类指针,指向子类对象,通过指针调用函数,执行子类的函数。
一个子类对象被传入形参类型为基类的函数中,所执行的函数,调用的是基类的函数。*/
原文地址:https://www.cnblogs.com/zhangdongsheng/p/1993307.html