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

相关文章:

  • 2022-12-23
  • 2022-01-13
  • 2021-08-29
  • 2022-01-15
  • 2021-04-01
  • 2021-09-02
  • 2021-06-25
猜你喜欢
  • 2022-12-23
  • 2021-11-07
  • 2021-09-28
  • 2021-11-08
  • 2021-10-26
  • 2021-12-13
相关资源
相似解决方案