• C++常见知识点2


    C++常见知识点2

    虚析构的作用?

    答:防止内存泄漏,正确析构指向派生类实例的基类指针。

    TIPS:如果不是虚析构函数,基类指针被释放不会调用派生类的析构函数。

    是不是一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态

    答:是的,virtual修饰符会被隐形继承的,virtual可加可不加,子类覆盖它的函数不加virtual也能实现多态。

    抽象类不会产生实例,所以不需要有构造函数

    答:错误,编译器默认生成构造函数。

    多态的作用

    答:

      隐藏实现细节,使得代码能够模块化;扩展代码模块,实现代码重用;

      接口重用:为了类在继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正确调用。

    构造函数和析构函数的调用顺序

    答:构造函数的调用顺序:基类构造函数—对象成员构造函数—派生类(当前类)构造函数;析构函数的调用顺序与构造函数相反。

    引用与指针有什么区别

    答:引用必须被初始化,指针不必。引用初始化以后不能被改变,指针可以改变所指的对象。不存在指向空值的引用,但是存在指向空值的指针。

    C++ 的构造函数可以是虚函数吗?

    答:C++中,构造函数不可以是虚函数,而析构函数可以且常常是虚函数。

    当类中声明虚函数时,编译器会在类中生成一个虚函数表,虚函数表是一个存储成员函数指针的数据结构。

    虚函数表是由编译器自动生成与维护的,virtual成员函数会被编译器放入虚函数表中,当存在虚函数时,每个对象都有一个指向虚函数的指针(vptr指针)。在实现多态的过程中,父类和派生类都有vptr指针。

    vptr的初始化:当对象在创建时,由编译器对vptr指针进行初始化。在定义子类对象时,vptr先指向父类的虚函数表,在父类构造完成之后,子类的vptr才指向自己的虚函数表。

    如果构造函数是虚函数,那么调用构造函数就需要去找vptr,而此时vptr还没有初始化。

    因此,构造函数不可以是虚函数。

    两个浮点数如何比较大小?

    答:两数相减的值,判断是否在一定范围内,因为浮点数不精确。

  • 相关阅读:
    20220727使用汇承科技的蓝牙模块HC-05配对手机进行蓝牙串口的演示
    数据结构与算法分类
    Java对URL中字符串进行编码
    Word处理控件Aspose.Words功能演示:使用C#或VB.NET在Word文档中进行邮件合并
    CocosCreater 教程(下)
    VMware 虚拟机里连不上网的解决方案
    4.2 Windows驱动开发:内核中进程线程与模块
    【雷达通信】阵列信号处理(Matlab代码实现)
    消息队列 - RabbitMQ
    Leetcode 【136. 只出现一次的数字】
  • 原文地址:https://blog.csdn.net/qq135595696/article/details/125530600