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

来源:互联网 发布:bt29万能钥匙下载软件 编辑:程序博客网 时间:2024/06/05 20:38

第四章-----表达式

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
原创粉丝点击