基础议题(条款1-4)

条款1:仔细区别pointer和reference

1)pointer可以是null,可以重新赋值指向不同的对象;reference不可以是null,无法修改指向对象。

2)常用操作符重载时,用引用。原文例子:

vector<int> v(10)

v[5]=0;

重载的vector.[]操作时,返回引用。

个人总结:看个人习惯,应用更可靠一点,指针灵活一点,减少值传递,多用引用传递。

条款2:最好使用C++转型操作符

C风格的转型操作:

(type) expression

C++风格的转型:

static_cast<type>(expression):常用,和C风格的功能基本相似,但多了一些编译期约束报错,大部分情况用这个。

const_cast<type>(expression):特殊情况使用,将const的变量、去掉const属性,但必须是指针或引用作为左值。

dynamic_cast<type>(expression):特殊情况使用,基类必须有虚函数、将基类指针指向派生类的指针,转成派生类指针指向派生类(安全的向下转换),运行期校验

个人总结:C++风格的类型转换优点多多,可以百度仔细学学。但是又臭又长(侯杰说的),确实我个人在使用时不知不觉就会换成C的。

条款3:绝对不要以多态(polymorphically)方式处理数组

个人总结:多态和指针算数不能混用,同样多态和指针数组也不能混用,原因是指针++操作时内存操作混乱。根本原因是C++规范不支持。但是我们一般也很少遇到

条款4:非必要不提供default constructor

个人总结:实际工作中写的类,太多情况需要default constructor,如果一个类不需要default constructor,改成私有函数?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值