C++ Primer 读书笔记

定义与声明

定义负责创建实体,声明(extern)使名字为程序所知,变量可以声明多次。

int i; //声明+定义
extern int i ;    //声明
entern int i=10//定义

引用必须初始化,初始化时,程序将引用和初始值绑定在一起,可以理解为变量起来一个别名(并非对象),因此不能定义引用的引用。

int ival = 1024;
int &refval = ival;
int &refval2;     //error

 

指针

指针与其指向的变量的类型要相同,初始化定义如下(初始化时注意变量前的&),访问指针所指向的对象时要使用解引用符(*),指针是一个对象

int ival = 1024int *q ;              //q是指向int型对象的指针
int *p =  &ival;    //p存放的是ival的地址(p是ival的指针)   
cout << *p << endl;

viod * 是一个特殊的指针类型,可以存放任意对象的地址,但是我们不知道他存放时什么类型的对象,所以能做的事情也比较有限(同别的指针比较,作为输入输出,赋值给另一个void*指针),不能直接操作void*所指向的变量。

int ival = 1024;
int *pi = &ival ;
int **pp = &pi;     //pp指向pi指针的指针
int *&rp = p ;    //rp是指针pi的引用  (int* &p = p )

思考:给定指针p,判断他是否指向一个合法对象。 

-----------------------------采用try,catch结构,把if(p)放在try块中。

 

const限定符

const变量初始化时必须赋值,并且赋值后不能更改。

const可以被引用,但是引用必须同样是const,且不能修改他的值。(对const的引用被称为”常量引用”)<------------区分------------>   初始化const引用时,可以使用任意表达式,只要表达式可以转换成引用的类型。

 

默认情况下,const对象仅在文件内部有效,若想在多个文件共享const对象,需要在变量定义之前添加extern关键词

还有一种const变量,他的初始值不是常量表达式并且需要在文件之间共享(定义一个const在多文件使用)不管声明还是定义都需要添加extern,头文件的extern作用是指明变量bufsize并非本文件独有,他定义在别处。

//file1.cc 定义并且初始化
extern const int bufsize = func();
//file1.h头文件
extern const int bufsize ;

 

posted @ 2018-08-28 18:16  白清欢  阅读(9)  评论(0编辑  收藏  举报