C++ Primer 学习笔记(一)——变量和基本类型
2012-07-03 17:21
465 查看
一、基本内置类型与类类型
C++中数据类型分为:基本内置类型与类类型。基本内置类型指:布尔型,字符型,整型,浮点型等。
二、字面值常量
1、只有内置类型存在字面值,没有类类型的字面值。
2、定义长整型时,应使用大写字母L,小写字母l易与数值1混淆。
3、字符字面值通常用一对单引号来定义。
4、C++中所有的字符串字面值都由编译器自动在末尾添加一个空字符。字符串字面值由一对双引号定义。
5、处理长字符串有个更基本的方法:在一行的末尾加一反斜线符号可将此行和下一行当作同一行处理。
三、变量
明确一下左值与右值的概念:
左值:可以出现在赋值语句的左边或右边;
右值:只能出现在赋值的右边,不能出现在赋值语句的左边。
例,变量是左值,数字字面值是右值。
1、变量初始化
(1)C++支持两种变量初始化的方式:复制初始化和直接初始化。
“初始化不是赋值”。初始化是指创建变量并给它赋初值,而赋值是擦除对象的当前值并用新值代替。
对于内置类型的对象,复制初始化和直接初始化几乎没有差别;对于类类型的对象,
有些初始化仅能用直接初始化完成。
(2)对于内置类型的变量,在函数体外定义的变量都初始化为0,在函数体内定义的变量,不进行自动初始化。
对于类类型的对象,其初始化是通过构造函数实现的。
(3)定义与声明
定义:用于为变量分配存储空间,还可以(不是必须)为变量指定初始值。在一个程序中(可能多个文件),
变量有且仅有一个定义。
声明:用于向程序表明变量的类型和名字。
有种观点认为,定义也是声明。因为当定义变量时,我们声明了它的类型和名字。个人认为,将声明和定义
完全区分开来,比较容易理解。
extern double pi; //ok: declaration not definitiondouble pi; //error: redefinition of pi
注意:变量必须且仅能定义一次,而且在使用变量前必须定义或声明!任何在多个文件中使用的变量
都需要有与定义分离的声明。在此情况下,一个文件中含有变量的定义,使用该变量的其他文件则
包含该变量的声明。
四、const限定符
(1)const变量定义时必须进行初始化,而且定义后不能通过重新赋值等方式被修改。
(2)const对象默认为文件的局部变量,此变量只存在于那个文件中,不能被其他文件访问。
除非:显式的指定它为extern。
(1)引用是一种复合类型,通过在变量名前添加“&”符号来定义。每种引用类型都“关联到”
某一其他类型。
(2)引用必须用与该引用同类型的对象(不能是常量,必须是“对象”)进行初始化。引用在
定义时必须进行初始化。
(3)引用是变量的别名。当引用初始化后,只要该引用存在,就不能将此引用绑定到另一个对象。
(4)非const引用不能指向const对象。
(5)非const引用只能绑定到与该引用同类型的对象;const引用则可以绑定到不同但相关的类型
的对象或绑定到右值。
(1)头文件一般包含类的定义、extern变量的声明和函数的声明。
(2)因为头文件包含在多个源文件中,所以不应含有变量或函数的定义。
(3)对于头文件不应该包含定义这一规则,有三个例外。头文件可以定义类、值在编译时就
已知的const对象和inline函数。分别解释:
定义类。为了产生能定义或使用类的对象的代码,编译器需要知道组成该类型的数据成员。同样还
需知道能够在这些对象上执行的操作。
值在编译时就已知的const对象。用常量表达式进行初始化的const变量,其值在编译时就已知。
所谓常量表达式是指,编译器在编译时就能计算出结果的表达式。当我们在头文件中用常量表
达式定义了const变量后,每个包含该头文件的源文件都有了自己的const变量,其名称和值都一样。
若const变量不是用常量表达式初始化,那么它就不应该在头文件中定义。相反,和其他的变量
一样,该const变量应该在一个源文件中定义并初始化(注意定义时用extern显式声明)。然后在
头文件中为它添加extern声明。
C++中数据类型分为:基本内置类型与类类型。基本内置类型指:布尔型,字符型,整型,浮点型等。
二、字面值常量
1、只有内置类型存在字面值,没有类类型的字面值。
2、定义长整型时,应使用大写字母L,小写字母l易与数值1混淆。
3、字符字面值通常用一对单引号来定义。
4、C++中所有的字符串字面值都由编译器自动在末尾添加一个空字符。字符串字面值由一对双引号定义。
5、处理长字符串有个更基本的方法:在一行的末尾加一反斜线符号可将此行和下一行当作同一行处理。
三、变量
明确一下左值与右值的概念:
左值:可以出现在赋值语句的左边或右边;
右值:只能出现在赋值的右边,不能出现在赋值语句的左边。
例,变量是左值,数字字面值是右值。
1、变量初始化
(1)C++支持两种变量初始化的方式:复制初始化和直接初始化。
int ival(1024); // direct-initialization int ival = 1024; // copy-initialization
“初始化不是赋值”。初始化是指创建变量并给它赋初值,而赋值是擦除对象的当前值并用新值代替。
对于内置类型的对象,复制初始化和直接初始化几乎没有差别;对于类类型的对象,
有些初始化仅能用直接初始化完成。
(2)对于内置类型的变量,在函数体外定义的变量都初始化为0,在函数体内定义的变量,不进行自动初始化。
对于类类型的对象,其初始化是通过构造函数实现的。
(3)定义与声明
定义:用于为变量分配存储空间,还可以(不是必须)为变量指定初始值。在一个程序中(可能多个文件),
变量有且仅有一个定义。
声明:用于向程序表明变量的类型和名字。
有种观点认为,定义也是声明。因为当定义变量时,我们声明了它的类型和名字。个人认为,将声明和定义
完全区分开来,比较容易理解。
extern int i; //declares int i; //definesextern double pi = 3.1416; //definition
extern double pi; //ok: declaration not definitiondouble pi; //error: redefinition of pi
注意:变量必须且仅能定义一次,而且在使用变量前必须定义或声明!任何在多个文件中使用的变量
都需要有与定义分离的声明。在此情况下,一个文件中含有变量的定义,使用该变量的其他文件则
包含该变量的声明。
四、const限定符
(1)const变量定义时必须进行初始化,而且定义后不能通过重新赋值等方式被修改。
(2)const对象默认为文件的局部变量,此变量只存在于那个文件中,不能被其他文件访问。
除非:显式的指定它为extern。
// file_1.cc extern const int buf_size = fcn(); //file_2.cc extern const int buf_size; //uses buf_size defined in file_2五、引用
(1)引用是一种复合类型,通过在变量名前添加“&”符号来定义。每种引用类型都“关联到”
某一其他类型。
(2)引用必须用与该引用同类型的对象(不能是常量,必须是“对象”)进行初始化。引用在
定义时必须进行初始化。
(3)引用是变量的别名。当引用初始化后,只要该引用存在,就不能将此引用绑定到另一个对象。
(4)非const引用不能指向const对象。
const int ival = 1024; const int &ref_val = ival; //OK int &ref2 = ival; //error
(5)非const引用只能绑定到与该引用同类型的对象;const引用则可以绑定到不同但相关的类型
的对象或绑定到右值。
// legal for const references only const int &r = 42; // double dval = 3.14; const int &ri = dval;六、头文件
(1)头文件一般包含类的定义、extern变量的声明和函数的声明。
(2)因为头文件包含在多个源文件中,所以不应含有变量或函数的定义。
(3)对于头文件不应该包含定义这一规则,有三个例外。头文件可以定义类、值在编译时就
已知的const对象和inline函数。分别解释:
定义类。为了产生能定义或使用类的对象的代码,编译器需要知道组成该类型的数据成员。同样还
需知道能够在这些对象上执行的操作。
值在编译时就已知的const对象。用常量表达式进行初始化的const变量,其值在编译时就已知。
所谓常量表达式是指,编译器在编译时就能计算出结果的表达式。当我们在头文件中用常量表
达式定义了const变量后,每个包含该头文件的源文件都有了自己的const变量,其名称和值都一样。
若const变量不是用常量表达式初始化,那么它就不应该在头文件中定义。相反,和其他的变量
一样,该const变量应该在一个源文件中定义并初始化(注意定义时用extern显式声明)。然后在
头文件中为它添加extern声明。
相关文章推荐
- C++ Primer复习和学习笔记 第二章 变量和基本类型
- c++ Primer学习笔记之第二章 变量和基本类型
- 【C++ Primer学习笔记】第2章:变量和基本类型
- 《C++ Primer》学习笔记---第2章 变量和基本类型
- 【C++ Primer学习笔记】第2章:变量和基本类型
- 【C++ Primer学习笔记】第2章 变量和基本类型
- c++ primer学习笔记-2变量与基本类型
- C++ Primer 学习笔记_5_变量和基本类型(续2)
- C++ primer 学习笔记(第二章:变量和基本类型)
- C++ Primer学习笔记2-变量与基本类型
- 【C++ Primer学习笔记】第2章:变量和基本类型
- C++ Primer 学习笔记(第二章:变量和基本类型)
- c++ primer 学习笔记 第二章 变量和基本类型
- C++ Primer 学习笔记_3_变量和基本类型
- C++ Primer 学习笔记4 变量和基本类型 (变量初始化规则、声明和定义)
- 《C++ Primer(第5版)》学习笔记:第2章 变量和基本类型
- C++ Primer 学习笔记3 a变量和基本类型
- C++ Primer 学习笔记_4_变量和基本类型(续1)
- c++ primer 学习笔记 3 变量与基本类型
- [C++ primer 学习笔记][02]变量和基本类型