C++虚函数和纯虚函数理解

虚函数:函数中带有关键字virtual
纯虚函数:纯虚函数是在基类中申明为虚函数,它在基类中没有定义, 但是要求任何派生类都需要定义自己的实现方法,在基类的实现纯虚函数的方法是在函数原型后添加=0(virtual void funtion1()=0)

虚函数的重载函数然然为虚函数, 在派生类中重定义虚函数时必须完全和基类完全相同。 
虚函数必须为类的成员函数,不能为全局函数,也不能为静态函数。不能将友员函数说明为虚函数,但是虚函数可以是另一个类的友员。
虚构函数可以是虚函数,但是构造函数不能为虚函数。一般的讲,如果类中定义有虚函数,则其析构函数也应该声明为虚函数,特别是在析构函数中需要完成一些有意义的操作,比如释放内存时,尤其应当如此。 在类系统中访问一个虚函数时,应使用指向基类类型的指针或对基类类型的引用,以满足运行时多态性的需求,当然也可以像调用普通成员函数一样来调用一个函数,若在派生类中没有重新定义虚函数,则该类的对象将使用其基类中的虚函数代码

抽象类定义:如果一个类中至少有一个纯虚函数,那么这个类就被称为抽象类。 
抽象类不仅包括纯虚函数,也可以包含虚函数。抽象类中纯虚函数可能是在抽象类中定义的,也可能是从基类继承的下来且重定义的。
派生类中必须重载基类中的纯虚函数,否则它仍然是一个抽象类。
从基类继承类的纯虚函数,在派生类中仍然是虚函数
抽象类的一个重要特点:抽象类只能用作派生类的基类,而不能直接创建对象实例。
原因:其中一个或多个函数没有定义,但仍可使用指向抽象类的指针支持运行时多态性。

虚函数表:虚函数是通过一张虚函数表来实现的。简称V-Table,在这个表中,主要是一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其真实反映实际的函数。在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所有,当我们用父类指针来操作一个子类的时候,这张虚函数表就显得无比重要了,其指明了实际所应该调用的函数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值