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

2 篇文章 0 订阅

虚函数—类的成员函数
说明:在成员函数前面添加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)
{
cout<<“Base::show()–”<<b<<endl;
}
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;

}

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值