[C++ primer]第二章笔记--变量和基本类型

来源:互联网 发布:华为网络 编辑:程序博客网 时间:2024/06/04 18:32
变量和基本类型
2.2 变量
1、变量提供一个具名的,可供操作的存储空间。
2、对象:指一块能存储数据并具有某种类型的内存空间。
3、初始化和赋值:初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是吧对象当前值擦除,用一个新值替 换。
4、定义在函数体内部的内置类型变量不会被初始化。
5、声明和定义:变量声明规定了变量的类型和名字,而定义除此之外还负责创建与名字关联的实体。
用extern来声明一个变量。
变量只能被定义一次,但可以被声明多次。

2.3 复合类型
1、引用
1.1、引用并非对象,只是为对象起了另外一个名字。不能定义引用的引用。
1.2、引用必须被初始化。定义引用时,程序把引用和初始值绑定在一起。
1.3、为引用赋值,实际上是把值赋给了与引用绑定的对象。
1.4、引用只能绑定到对象上,不能与字面值或计算结果绑定。
2、指针
2.1、指针是‘指向’另外一种类型的复合类型,指针本身就是对象,允许对指针赋值和拷贝,指针无需在定义时赋初值。
2.2、引用不是对象,所以不能定义指向引用的指针。
2.3、如果指针指向一个对象,用解引用符(*)来访问对象,给解引用的结果赋值,也就是给指针所指的对象赋值。
2.4、void*是一种特殊类型的指针,可用于存放任意对象的地址。

3.const限定符
3.1、如果想在多个文件中共享const对象,必须在变量的定义之前添加extern关键字。
3.2、对常量的引用不能被用作修改它所绑定的对象。
3.3、常量引用可以绑定任意对象(包括字面值),且不能通过常量引用改变绑定对象的值,而非常量引用不能绑定const类型对象。
3.4、指向常量的指针(const int *p)不能用于改变其所指对象的值。要想存放常量对象的值,只能使用指向常量的指针。
也就是说,常量对象只能用指向常量的指针来指向,且不能改变其所指向对象的值。
3.5、允许指向常量的指针指向一个非常量,这点和引用一样。
3.6、常量指针(int *const p)必须被初始化。把*号放在const前,表示指针是一个常量。
3.7、顶层const:表示指针本身是个常量,底层const:表示指针所指对象是个常量。
推广:顶层const可以表示任意对象时常量,底层const则与指针和引用等符合类型基本类型有关。
用于声明引用的都是底层const。

2.4、处理类型
1、类型别名
typedef double wages;//wages是double的同义词。
using SI=Sale_item;//SI是sale_item的同义词。
2.auto类型说明符
auto让编译器通过初始值来推算变量的类型。
3、decltype类型指示符
作用是选择并返回操作数的数据类型。
decltype((val))的结果永远是引用,而decltype(val)的结果只有当val是引用时才是引用。

2.5、自定义数据结构
1.类数据成员
类的数据成员定义了类的对象的具体内容,每个对象都有自己一份数据成员拷贝。
可以为数据成员提供一个类内初始值,没有初始值的成员将被默认初始化。
0 0