《C++ Primer》学习笔记---第2章 变量和基本类型
1. 变量的定义(definition)用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中变量有且只能定义一次。
声明(declaration)用于向程序表明变量的类型和名字。可以用extern关键字声明变量而不定义它,extern声明不是定义,也不分配空间。事实上,它只是说明变量定义在程序的其他地方,程序中的变量可以声 明多次,但只能定义一次。
2. const限定符可以把一个对象转换成一个常量。因为常量在定义后就不能被修改了,所以const定义时必须初始化。
除非特别说明,在全局作用域声明的const变量是定义该对象的文件的局部变量,此变量只存在于那个文件中,不能被其他文件访问;
非const变量默认为extern。要使const变量能够在其他文件中访问,必须显式的指定它为extern,否则只能在本文件中使用,不能被其他文件访问。
3. 引用只是对象的另一个名字,必须在定义引用时进行初始化,初始化是指明引用指向哪个对象的唯一方法。
非const引用只能绑定到与该引用同类型的对象,const引用则可以绑定到不同但相关的类型的对象或绑定到右值
Eg:double dval = 3.14;
const int &ri = dval;
std::cout << ri << std::endl;
输出的ri是3,而const int &ri = dval;改成int &ri = dval;后就会报错
4. 用class和struct关键字定义类的唯一差别在于默认访问级别:默认情况下,struct的成员为public,而class的成员为private。
5. 头文件用于声明而不是用于定义。头文件包含在多个源文件中。所以不应该含有变量或者函数的定义。
头文件不应该包含定义这一规则,有三个例外。头文件可以定义类、值在编译时就已知道的const对象和inline函数。
6. #include指示接受以下两种形式:#include<standard_header>和#include"my_file.h"
如果头文件名括在尖括号(<>)里,那么认为该头文件是标准头文件,编译器将会在预定义的位置集查找该头文件,这些预定义的位置可以通过设置查找路径环境变量或者通过命令行选项来修改
如果头文件名括在一对引号里,那么认为它是非系统头文件,非系统头文件的查找通常开始于源文件所在的路径。