• 经典问题解析四


    new关键字与malloc函数的区别

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

    malloc是由c库提供的函数

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

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

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

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

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

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

    析构函数可以成为虚函数

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

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

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

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

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

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

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

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

    -指针

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

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

    -引用

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

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

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

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

    小结

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

    构造函数不能成为虚函数

    析构函数可以成为虚函数

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

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

      

  • 相关阅读:
    代码坏味道
    外包对程序员发展有什么弊端?
    前端接口神器
    使用Autofac
    在 WASI 上运行 .NET 7 应用程序
    在非k8s 环境下 的应用 使用 Dapr Sidekick for .NET
    一个简单的模拟实例说明Task及其调度问题
    xxljob 小结
    [LeetCode] 1291. Sequential Digits 顺次数
    [LeetCode] 1289. Minimum Falling Path Sum II 下降路径最小和之二
  • 原文地址:https://www.cnblogs.com/sugarWill666/p/9211506.html
Copyright © 2020-2023  润新知