c++ primer 读书笔记三

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 ;0
int reused=0;//新建局部变量reused,覆盖了全局变量reused
std::cout<<reused<<" "<<unique<<std::endl;
//输出0,0
std::cout<<::resued<<""<<unique<<std::endl;
//::显式地访问全局变量输出结果42 0;

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

int ival=1024int &refval=ival;//refVal指向ival
int &refval2//错误,引用必须被初始化

一般在初始化变量时初始值会拷贝到新建的对象中,然而定义引用时,程序把引用和它的初始值绑定在一起而不是将初始值拷贝给引用,一旦初始值完成,引用将它的初始值对象一直绑定在一起
引用就是别名:引用并非对象,相反的,它只为一个已经存在的对象所起的另外一个名字。
定义了一个引用之后对其进行的操作都是与之绑定的对象上进行的:


refVal=2int ii=refVal;

引用的定义
允许在一条语句中定义多个引用,其中每个引用标识符都必须以符号&开头:
int i=1024,i2=2048//i和i2都是int
int  &r=i,r2=i2;//r是一个引用,与i绑定在一起,r2是int
int i3=1024,&ri=i3;
int &r3=i3,&r4=i2;

int &refVal4=10;错误:引用类型的初始值必须是一个对象
double dval=3.14;
int &refVal5=dval;  错误:引用类型的初始值必须是int型对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值