More effective C++ 总结:基础议题(1)

1. Pointers 与references区别(指针与引用区别)
• 指针能为NULL,引用不能为NULL;
• 指针可以被重新赋值指向另一个对象,但是引用不总是指向最初的对象;
• 当你不能因为指向其他东西而改变其他东西使用引用,其他的使用指针;

2.四种强制转换
• static_cast:可以实现C++中内置基本数据类型之间的相互转换。
• const_cast: const_cast操作不能在不同的种类间转换。相反,它仅仅把一个它作用的表达式转换成常量。它可以使一个本来不是const类型的数据转换成const类型的,或者把const属性去掉。
• reinterpret_cast: 有着和C风格的强制转换同样的能力。它可以转化任何内置的数据类型为其他任何的数据类型,也可以转化任何指针类型为其他的类型。它甚至可以转化内置的数据类型为指针,无须考虑类型安全或者常量的情形。不到万不得已绝对不用。
• dynamic_cast:
(1)其他三种都是编译时完成的,dynamic_cast是运行时处理的,运行时要进行类型检查。
(2)不能用于内置的基本数据类型的强制转换。
(3)dynamic_cast转换如果成功的话返回的是指向类的指针或引用,转换失败的话则会返回NULL。
(4)使用dynamic_cast进行转换的,基类中一定要有虚函数,否则编译不通过。

3.不要以多态来处理数组
数组是固定偏移,多态数组化会被切片,切片了就定位不准了。

4.异常
利用析构函数防止资源泄露:初始化过程中,要建立异常,防止在构造过程中发生异常,资源泄露。使用try-catch捕获异常加delec!其实没必要这么复杂,使用智能指针auto_ptr的class template就可以了。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值