zoukankan      html  css  js  c++  java
  • 经典问题解析四

    new关键字与malloc函数的区别

    new关键字是c++的一部分

    malloc是由c库提供的函数

    new以具体类型为单位进行内存分配

    malloc以字节为单位进行内存分配

    new在申请内存空间时可进行初始化

    malloc仅根据需要申请定量的内存空间

    构造函数不可能成为虚函数

      在构造函数执行结束后,虚函数表指针才会正确的初始化

    析构函数可以成为虚函数

      建议在设计类时将析构函数声明为虚函数

    构造函数中不可能发生多态行为

      在构造函数执行时,虚函数表指针未被正确初始化

    析构函数中不可能发生多态行为

      在析构函数执行时,虚函数表指针已经被销毁

    dynamic_cast是与继承相关的类型转换关键字

    dynamic_cast要求相关的类中必须有虚函数

    用于有直接或者间接继承关系的指针(引用)之间

    -指针

      转换成功:得到目标类型的指针

      转换失败:得到一个空指针

    -引用

      转换成功:得到目标类型的引用

      转换失败:得到一个异常操作信息

    编译器会检查dynamic_cast的使用是否正确

    类型转换的结果只可能在运行阶段才能得到

    小结

    new/delete会触发构造函数或者析构函数的调用

    构造函数不能成为虚函数

    析构函数可以成为虚函数

    构造函数和析构函数中都无法产生多态行为

    dynamic_cast是与继承相关的专用转换关键字

      

  • 相关阅读:
    angular11源码探索七[服务二]
    angular11源码探索六[服务基础一]
    有趣的特效,嘤嘤嘤
    angular11学习(十八)
    matplotlib 去掉小方框
    xlrd.biffh.XLRDError 问题报错
    页面点击出现蓝色背景色
    移动端不显示滚动条
    Swiper垂直方向滑动,高度获取不正确的解决方法
    二维树状数组
  • 原文地址:https://www.cnblogs.com/sugarWill666/p/9211506.html
Copyright © 2011-2022 走看看