虚函数---类的成员函数

匿名 (未验证) 提交于 2019-12-02 23:26:52

虚函数―类的成员函数
说明:在成员函数前面添加virtual关键字 ----那么这个函数就成员了虚函数
如果一个类中存在虚函数,那么这个类的对象中包含一个虚表(虚表首地址)
虚表在对象空间的开始位置
class Data
{
public:
Data(){}
~Data(){}
virtual void show(){}//虚函数
virtual void info(){}
protected:
int data;
};

如果对象调用的是虚函数,那么会查询虚表,再根据虚表中的函数指针执行

纯虚函数
定义:函数不需要实现, 在函数声明后面赋值为0
virtual void info()=0;
特点:如果一个类中包含纯虚函数,那么这个类就是抽象类(不能创建对象)
抽象类被派生出子类,如果在子类中没有把父类的中纯虚函数全部实现, 那么子类还是抽象类

虚函数+继承 -----实现 多态

虚函数, 继承, 在子类中重新实现父类的虚函数, 把子类地址赋值给父类指针, 通过父类指针类调用虚函数(根据虚表来查询调用)

虚函数默认参数
class Base
{
public:
virtual void show(int b=321)
{

}
protected:
int data;
};

class Child:public Base
{
public:
void show(int c=123)
{
cout<<“Child::show()―”<<c<<endl;
}
protected:
int cdata;
};

int main(int argc, char *argv[])
{

Child ch; ch.show(10);  //---------多态 Base* bptr = &ch; bptr->show();  //----调用子类函数,父类中的默认参数  return 0;

}

原因,函数是在虚表中查询执行, 参数是在通过指针在父类数据中获取

转载请标明出处:虚函数---类的成员函数
文章来源: https://blog.csdn.net/qq_41256954/article/details/88851231
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!