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是与继承相关的专用转换关键字

      

  • 相关阅读:
    Objective-c 语法,类/属性/函数(iOS学习笔记,从零开始。)
    设置UIButton 对齐方式
    iOS Runtime[转载]
    使用带粒子效果的 CAEmitterLayer
    使用maskView设计动画效果
    url、href、src 详解
    良好的JavaScript编码风格(语法规则)
    关于闭包
    盒子模型详解
    git入门笔记汇总——(廖雪峰博客git入门)
  • 原文地址:https://www.cnblogs.com/sugarWill666/p/9211506.html
Copyright © 2011-2022 走看看