一、 函数重载和虚函数的区别
函数重载:
1. 构造函数是跟函数名重合,但是参数不同或者类型不同,比如:
#include<iostream>
#include<string>
usingnamespace std;
//声明基类Student
class Student
{
public:
Student(int, string,float); //声明构造函数,参数不同,包含两个参数
intStudent(); //类型不同,为int整形
//Student类成员函数的实现
Student::Student(int n,stringnam,float s)//定义构造函数
{
num=n;
name=nam;
score=s;
}
2. 虚函数
虚函数是解决派生类中同名函数调用的产生的。
2.1派生类可以对基类的虚函数进行重新定义
2.2派生类虚函数的调用,可以用对象指针。包括指向基类的指针和指向派生类的指针
2.2.1指向基类的指针,调用的是基类的虚函数
2.2.2指向派生类的指针,调用的是派生类的虚函数
//*******************例子如下*****************************
//****************头文件中(*.h)**************************
class student
{
stdent(int age,string name); //函数重载
~stdent(); //虚函数
}
//****************源文件中(*.cpp)**************************
stdent::stdent{}
~ stdent::stdent{}
//*******************派生类*********************************
class graduate:public stdent
{
graduate(intage, string name); //函数重载
~graduate(); //虚函数
}
//********************main()函数******************************
int main()
{
studentstudend1; //创建一个student基类实例studend1
graduategraduate1; //创建一个graduate派生类实例graduate1
student*pst->student1; //创建一个student基类指针* pst,
//并且指向基类实例student1
graduate*pgra->graduate1; //创建一个graduate派生类指针*pgra,
//并且指向派生类实例graduate1
*pst->student(); //基类指针调用基类虚函数
*pgra->graduate(); //派生类指针调用派生类虚函数
}
AddGroup(
/* [string][in] */ LPCWSTR szName,
/* [in] */ BOOL bActive,
/* [in] */ DWORD dwRequestedUpdateRate,
/* [in] */ OPCHANDLE hClientGroup,
/* [in][unique] */ LONG *pTimeBias,
/* [in][unique] */ FLOAT *pPercentDeadband,
/* [in] */ DWORD dwLCID,
/* [out] */ OPCHANDLE *phServerGroup,
/* [out] */ DWORD *pRevisedUpdateRate,
/* [in] */ REFIID riid,
/* [iid_is][out] */ LPUNKNOWN *ppUnk)