博客
关于我
C++学习(35)
阅读量:719 次
发布时间:2019-03-21

本文共 874 字,大约阅读时间需要 2 分钟。

  • 运算符重载的选择 criteria只能使用成员函数重载的运算符包括=(), [],->和delete(). 这是因为这些运算符的实现往往需要与对象的状态密切相关,或者需要修改对象的内部状态。在这种情况下,成员函数比友元函数更合适。例如,重载=运算符通常作为成员函数来实现。

  • double等默认类型转换C++默认的类型转换是从下到上进行的,系统可以把int转换成float,或double,但不会反过来。

  • 内存管理

    • 栈区(stack):由编译器自动分配和释放,存放函数参数和局部变量。
    • 堆区(heap):由程序员分配和释放,效率较低,可能存在碎片。
    • 全局区(static):全局变量和静态变量存储在这里,程序结束后由系统释放。
    • 常量区和代码区:分别存放常量和代码二进制。
  • 动态_cast 和 转换函数dynamic_cast用于基类指针或引用到派生类的转换,失败则返回null或抛出异常。静态_cast需要程序员自行判断安全性,-reinterpret_cast允许不安全但有效的类型转换。

  • 回调函数回调函数通过函数指针调用,适用于需要响应事件的场景。成员函数需要this指针,而回调函数不需要。理解这一点很重要,因为类成员函数和回调函数的调用机制不同。

  • 内存管理注意事项调用类成员函数前,编译器会检查析构函数的访问性。将析构函数设为私有,可以防止在栈上分配对象,强制使用new操作符分配对象。

  • 类型转换与运算符重载类成员函数运算符需要左操作数是该类对象或引用,而友元函数运算符的左操作数可以是其他类型,这在具体实现时需要谨慎。类型转换函数无法作为友元函数定义。

  • 选项分析A选项正确,组合类的析构函数不需要显式销毁成员对象,因为当组合类析构时,成员对象会被销毁。B选项错误,基类无法到派生类的转换不可能自动发生。C选项正确,析构函数没有参数,不可重载。D选项正确,派生类需定义动态绑定。

  • 把以上内容运用于实际代码编写时,需注意运算符重载的选择,合理利用成员函数和友元函数的特点,确保内存管理的正确性,正确使用类型转换函数,并尊重编译器的内存管理规则。

    转载地址:http://ojcgz.baihongyu.com/

    你可能感兴趣的文章
    Mysql中触发器的使用示例
    查看>>
    Mysql中设置只允许指定ip能连接访问(可视化工具的方式)
    查看>>
    mysql中还有窗口函数?这是什么东西?
    查看>>
    mysql中间件
    查看>>
    MYSQL中频繁的乱码问题终极解决
    查看>>
    MySQL为Null会导致5个问题,个个致命!
    查看>>
    MySQL为什么不建议使用delete删除数据?
    查看>>
    MySQL主从、环境搭建、主从配制
    查看>>
    Mysql主从不同步
    查看>>
    mysql主从同步及清除信息
    查看>>
    MySQL主从同步相关-主从多久的延迟?
    查看>>
    mysql主从同步配置方法和原理
    查看>>
    mysql主从复制 master和slave配置的参数大全
    查看>>
    MySQL主从复制几个重要的启动选项
    查看>>
    MySQL主从复制及排错
    查看>>
    mysql主从复制及故障修复
    查看>>
    MySQL主从复制的原理和实践操作
    查看>>
    webpack loader配置全流程详解
    查看>>
    mysql主从复制,读写分离,半同步复制实现
    查看>>
    MySQL主从失败 错误Got fatal error 1236解决方法
    查看>>