C++之多态性与虚函数

在C++中,多态性的一个重要表现形式之一是:具有不同功能的函数可以用同一个函数名,这样就可以用一个函数名调用不同内容的函数。

从系统实现的角度看,多态性分为两类,静态多态性和动态多态性。

静态多态性是在程序编译时系统就能决定要调用哪个函数,通过函数的重载实现的,又称为编译时的多态性。动态多态性不在编译时确定调用的时那个函数,而是在程序运行时才动态确定操作所针对的对象。是通过虚函数实现的,又称为运行时的多态性。

虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。

虚函数的使用方法:

1,:在基类中用virtual声明成员函数为虚函数。在类外定义时,不必再加virtual]。

2:在派生类中重新定义此函数,函数名,函数类型,函数参数个数和类型必须与基类的虚函数相同,根据派生类的需要重新定义函数体。

3:当一个成员函数被声明为虚函数后,其派生类中的同名函数都自动成为虚函数。因此在派生类中重新定义该虚函数时,可以加virtual,

也可以不加,但习惯上一般每层都加。

4:如果在派生类中没有对基类的虚函数的重新定义,则派生类简单的继承其直接基类的虚函数。

5:定义一个指向基类对象的指针,使它指向同一类族中需要调用该函数的对象。

6:加一个Virtual,内存中会多四个字节,用于指向虚函数表。

以下是一个小例子:

#include<iostream>
using namespace std;
class A
{
public :
	A ()
	{a=0;}
	virtual void display()
	{cout<<"a="<<a<<endl;}
private :
	int a;
};
 class B:public A
{
public :
	B()
	{b=1;}
	 void display()
	{cout<<"b="<<b<<endl;}
private :
	int b;
};
 class C:public B
{
public :
	C(){c=2;}
	void display()
	{cout<<"c="<<c<<endl;}
private :
	int c;
};
void main()
{
	A *p;
	A a;
	B b;
	C c;
	p=&b;
	p->display();
	cout<<sizeof(a)<<endl;
	cout<<sizeof(b)<<endl;
	cout<<sizeof(c)<<endl;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值