c++虚函数的使用方法

虚函数的使用方法:

 


(1)在基类用virtual声明成员函数为虚函数。这样就可以在派生类中重新定义此函数,为它赋予新的功能,并能方便被调用。
在类外定义虚函数时,不必在定义virtual

 

 

 (2)在派生类中重新定义此函数,要求函数名,函数类型,函数参数个数和类型全部与基类的虚函数相同,并根据派

 

生类的需要重新定义函数体。

c++规定,当一个成员函数被声明为虚函数后,其派生类的同名函数都自动成为虚函数。因此在派生类重新声明该

虚函数时,可以加virtual,也可以不加,但习惯上一般在每层声明该函数时都加上virtual,使程序更加清晰。

 

如果再派生类中没有对基类的虚函数重新定义,则派生类简单的继承起基类的虚函数。 

 

 (3)定义一个指向基类对象的指针变量,并使它指向同一类族中需要调用该函数的对象。

 (4)通过该指针变量调用此虚函数,此时调用的就是指针变量指向的对象的同名函数。

 

下面来看一个例子:

#include
#include

using namespace std;

class Student
{
	public:
		Student(int , string, float);
		void display();
	protected:
		int num;
		string name;
		float score;	
};
Student::Student(int n, string na, float s)
{
	num=n;
	name=na;
	score=s;
}
void Student::display()
{
	cout<<"num:"<display();
	p=&grad1;
	cout<<"graduate:"<display();
	
	return 0;
} 

输出的结果为:

 

c++虚函数的使用方法_第1张图片

此时没有将任何函数声明为虚函数,所以在Graduate类中diaplay()函数输出时没有pay的值,以为p指针是Student类的,本身Student不包括pay数据。

但如果我们想输出pay的值,只要把Student类中的display函数声明为虚函数即可,只要把它改为virtual void display()声明为虚函数就行,输出的结果为:

c++虚函数的使用方法_第2张图片

你可能感兴趣的:(c++)