您的位置:首页 > 编程语言 > C语言/C++

《C++Premier》读书笔记之二

2014-10-27 19:43 176 查看

一、C++内置数据类型:字符型,整型,浮点型,bool值等。C++还提供了自定义数据类型机制,标准库正是利用这种机制定义了许多更加复杂的类型,比如可变长字符串string、vector等。还能修改已有的类型以形成复合类型。

1、整型

表示整数、字符和布尔值的算术类型称为整型。

内置类型的机器级表示:C++内置类型与其在计算机的存储器中的表示方式紧密相关。每一位存储0或1,在位这一级上,存储器是没有结构和意义的。让存储器具有结构意义的最基本方法就是用块(chunk)处理存储。块的位数一般都是2的幂次方,因为这样可以一次处理8、16、32位。现在64和128的块如今也变的很普通。但通常将8为称为一个字节,32位或者4个字节称为一个“字”(word)。

思考:整型的赋值:若我们试着把一个超出其取值范围的值赋予给一个指定的类型的对象时,结果会怎么样?

答案取决于这种类型是signed还是unsigned的。对于unsigned类型来说,编译器会自动调整越界值使其满足要求。编译器会对该值unsigned类型的可能取值数目求模,然后取得其值。 对于unsigned的类型,负数总是超出其取值范围的。unsigned类型的对象可能永远不会保存负数。有些语言将负数赋值给unsigned类型是非法的。但c++中是合法的。

C++中整型被设计成允许程序必要时直接处理硬件,因此整型被定义成满足各种各样的硬件特性,大多数程序员可以通过限制实际使用的类型来忽略这些复杂性。

不要使用short和signed char用作计算类型,因为会隐含赋值越界的错误,会出现截断“wrap around”,以至于因越界而变成很大的负数。在实际运用中int用16位表示,对于多数应用来说太小了。实际应用中,通用计算机都是和long类型一样长的32位来表示int类型。

2.浮点类型

double类型比float类型的计算速度快的多,所以一般都可以使用double来处理。

二、变量

C++是一门静态类型语言,在编译时会作类型检查。对象的类型会限制对象的可以执行的操作。因此程序中必须先定义变量的类型。
什么是对象?对象就是内存中具有类型的区域。说的具体就是计算左值表达式会产生对象。
变量初始化:直接初始化和复制初始化。
int ival(1024);//就是直接初始化
int ival=1024;//就是复制初始化
在C++中初始化和赋值是两种不同的操作。直接初始化语法更为灵活且效率高。
构造函数:定义如何进行初始化的成员函数。可以调用初始化多个对象
内置类型变量的初始化:在函数体外的变量都初始化为0,在函数体内定义的内置类型变量不进行自动化初始化。未初始化的变量引起的错误难以发现。
定义和声明:定义是为变量分配内存,还可以指定初始值,在同一个程序里有且仅有一个定义。声明是想程序表明变量的类型和名字。

三、const限定符

1.定义const对象时不可修改的常量,所以在定义时必须初始化。
2.const对象默认为文件的局部变量
需要指定const变量为extern,就可以再整个程序中访问对象。非const变量默认为extern,要使const变量能够在另外的文件使用,必须显示的指定为extern。

四、引用

引用是一种复合类型(compound type)。复合类型是指用其他类型定义的类型。在引用的情况下,每一种引用类型都“关联到”某一其他类型。不能引用定义引用类型的引用,但可以定义任何其他类型的引用。

const引用是指指向const对象的引用
const int ival=1024;
const int &refval=ival;//right
int &ref2=ival;//error!
const引用是只读的
非const引用只能绑定到与该引用相应类型的对象。
const引用则可以绑定到不同但相关的类型的对象或绑定到右值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: