【零散拾忆】C++零散知识汇集(一)

C++零散知识汇集的目的

    记录一些C++中不足以独立文章去写但又重要的知识点,汇集在一起。

    重要的知识点, 在我看来基本是 工作中容易疏忽犯错的点、容易忘记的点、晦涩冷僻忽略的点以及面试容易问到的点

一、引用和指针的异同

         相同点:

             通过指针和引用均可以指向某个对象 。均可以实现引用传递避免对象copy开销。

         区别:

              内存占用: 指针占用内存,引用仅仅是一个别名不占用内存

              初始化:    指针定义时可以不用初始化,后续可以多次复制。引用必须在定义时绑定某个对象且生命周期内不能再绑定其他对象。

              安全性: 指针可能为空需要判断安全性,而引用可以相对安全直接操作访问

              sizeof:     指针返回指针占用的大小 而引用返回的是指向对象的大小。

              const修饰: 指针本身是一个对象,可const ptr修饰该指针只读, 也可ptr const修饰指针指向的对象只读。引用只是一个别名,只能修改指向的对象只读。

二、强制类型转换

         c语言中全部通过(type cast)方式做强制类型转换,c++细分为四种强化类型转换,个人理解这样做的好处是更严格更清晰直观的知道做的对应的转换,细分后的强制转换功能更强大,更安全。

         static_cast  最常用的强制类型转换,当type可以被显式或隐式转换才能转换。

         const_cast  去const转换,将常量对象转换为非常量对象

         reinterpret_cast 可以改变指针类型 或将整型转换为指针 or指针转换为整型。这种转换属于危险性转换,适用于

依赖于实现的底层编程技术,是不可移植的。         

          dynamic_caset 适用于多态的转换

  三、 assert断言

          assert(express) 用于调试 当表达式false时进程停止执行 对于release版本设置 NDEBUG宏可以关闭    


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值