c++primer第四章表达式小结-4

100 篇文章 8 订阅

第四章-----表达式

1.C++ 语言提供了两种类似于 vector 和迭代器类型的低级复合类型——数组和指针。与 vector 类型相似,数组也可以保存某种类型的一组对象;而它们

的区别在于,数组: 长度是固定的。数组一经创建,就不允许添加新的元素。不允许数组直接复制和赋值,数组的长度是固定的。


2.指针: 可以像迭代器一样用于遍历和检查数组中的元素。现代 C++ 程序应尽量使用 vector 和迭代器类型,而避免使用低级的数组和指针。


3.void* 指针C++ 提供了一种特殊的指针类型 void*,它可以保存任何类型对象的地址。


4.当一个对象被用作右值的时候,用的是对象的值(内容),当对象被用作左值的时候,用的是对象的身份-在内存中的位置。左值既可以在等号左边,也可以在等号右边。右值只能在右边。 

 

5.在表达式求值过程中,编译器的隐形转换运算对象常常由一种类型转换成另一种类型。小整数类型(如bool、char、short等)通常会被提升成较大的整数类型,主要是int。const 不能转成非const.,反方向可以。除非使用const_cast显示转换  。。参与取余运算对象必须是整数类型。


6. c++11新标准规定整数相除的商一律向0取整(即直接切除小数部分)。逻辑与(&&)和逻辑或(||)满足短路求值的策略。


7.显示类型转换:
static_cast:任何具有明确定义的类型转换,只要不包含底层const,都可以使用static_cast。

const_cast:只有const_cast且它仅仅只能改变运算对象的底层const。对于将常量对象转换成非常量对象的行为,我们一般称为“去掉cosnt性质。就可以执行写操作,如果对象本身(一般是指针指向的对象)是非常量,写是合法的,但如果对象是一个常量,使用const_cast执行写操作就是未定义

dynamic_cast:用于将基类的指针或引用安全的转换成派生类的指针或引用。

reinterpret_cast:reinterpret_cast 通常为运算对象的位模式提供较低层次上的重新解释。非常危险

注意:强烈建议程序员避免使用强制类型转换。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值