面试中c++中单继承关于虚函数常遇到的4个问题

本文探讨了C++中关于虚函数在面试中经常遇到的问题,包括何时需要将析构函数设为虚函数、基类无虚函数而派生类有虚函数时的内存问题、在基类构造函数中清理虚函数表的影响,以及派生类函数参数默认值的隐患。通过理解虚函数的作用、动态绑定和虚函数表等概念,有助于解决这些面试难题。
摘要由CSDN通过智能技术生成

在讲到虚函数之前,先附一张表(如果急切,直接翻到说虚函数的部分即可)
这里写图片描述

  基类的私有成员变量,派生类虽能继承,但不能访问,是不可见的。
  基类的保护成员和派生类的唯一不同就是作用域。
  除了析构和所有的构造不可继承外,其他都可继承
  
基类和派生类成员方法的关系:
重载:(同一作用域),方法名相同,返回值类型,参数列表不同。
隐藏:(使用前提:派生类对象调用继承于基类的方法)同名的方法就隐藏了。(函数名,不管参数)
覆盖:(virtual)(使用前提:动多态,基类指针,指向不同的派生类对象,且要调用虚函数):即虚函数表中覆 盖,返回值,参数列表,函数名都相同,基类的方法是虚函数,派生类的自动成为虚函数,两方法是覆盖关 系。

基类对象 =》 派生类对象      不行
派生类对象 =》基类对象      (由下都上) ok
基类指针或引用=》派生类对象    ok,只能访问派生类继承来的成员
派生类指针或引用 =》基类对象   不行

虚函数基础讲解
虚函数的作用:允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的 同名函数
虚函数的使用:
1:基类的方法前面加上virutual,派生类的同返回值,同方法名,同参数的方法也自动成为虚函数。根据派生类的 需求,重写此函数。
2:定义一个指向基类对象的指针变量,并使它指向同一类族中需要调用该函数的对象。
3:通过该指针变量调用此虚函数,此时调用的就是指针变量指向的对象的同名函数。(原因与动态绑定有关,下面 会详细说)

纯虚函数:在基类中声明的虚函数,它在基类中没有定义(无函数体),但要求任何派生类都要定义自己的实现方法。 在基类中实现纯虚函数的方法是在函数原型后加“=0”(eg:virtual void funtion()=0 ),拥有纯虚函数 的类是抽象类。抽象类不能实例化对象.
静多态(编译时多态):重载,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值