c++ primer 读书笔记三

来源:互联网 发布:西安软件新城公寓 编辑:程序博客网 时间:2024/06/05 02:16

2.2.2声明和定义的关系

声明使得名字为程序所知,一个文件如果想使用别处的定义的名字则必须包含对名字的声明,而定义则负责创建与名字相联的实体extern int i;//声明而非定义int i//声明并且定义j初始化的声明等于定义变量能被定义一次,但可以被多次声明

2.2.4名字的作用域
嵌套得的作用域
作用域能彼此包含,被包含(或者说被嵌套)的作用域被称为内层作用域
作用域一旦声明了某个名字,它嵌套的所有作用域都能被访问该名字。同时,允许在内层作用域重新定义外层作用域已有的名字

#include<iostream>int reused=42;//拥有全局作用域int main(){int unique=0//拥有块作用域std::cout<<reused<<"; "<<unique<<std::endl;//42 ;0int reused=0;//新建局部变量reused,覆盖了全局变量reusedstd::cout<<reused<<" "<<unique<<std::endl;//输出0,0std::cout<<::resued<<""<<unique<<std::endl;//::显式地访问全局变量输出结果42 0;

2.3.1引用
引用为对象起另外一个名字

int ival=1024int &refval=ival;//refVal指向ivalint &refval2//错误,引用必须被初始化一般在初始化变量时初始值会拷贝到新建的对象中,然而定义引用时,程序把引用和它的初始值绑定在一起而不是将初始值拷贝给引用,一旦初始值完成,引用将它的初始值对象一直绑定在一起引用就是别名:引用并非对象,相反的,它只为一个已经存在的对象所起的另外一个名字。定义了一个引用之后对其进行的操作都是与之绑定的对象上进行的:refVal=2int ii=refVal;引用的定义允许在一条语句中定义多个引用,其中每个引用标识符都必须以符号&开头:int i=1024,i2=2048//i和i2都是intint  &r=i,r2=i2;//r是一个引用,与i绑定在一起,r2是intint i3=1024,&ri=i3;int &r3=i3,&r4=i2;int &refVal4=10;错误:引用类型的初始值必须是一个对象double dval=3.14;int &refVal5=dval;  错误:引用类型的初始值必须是int型对象