C++学习笔记——2

初始化变量时直接初始化比复制 初始化效率要高

int ival(1024) // direct-initialization
int ival = 1024 // copy-initialization

内置类型变量是否自动初始化取决于变量定义的位置,在函数体外定义的变量都初化成0,在函数体里定义的内置类型变量不进行自动初始化。

只有当extern声明位于函数外部时,才可以含有初始化式。

非const变量默认为extern,要使const变量能够 在其它的文件 中访问,必须显式地指定它为extern.
ex.
// file_1.cc
int counter;// definition
// fle_2.cc
extern int counter; // uses counter form file_1
++counter; // increents counter defined in file_1

//file_1.cc
// defines and initializes a const that is accessible to other files
extern const int bufSize = fcn();
// file_2.cc
extern const int bufSize; // uses buffSize from file_1
// uses bufSize defined in file_1
for (int index = 0; index != bufSize; ++index)
//......


引用是一种复合类型,通过在变量 名前添加“&”符号来定义。每种引用类型都“关联到”某一其它类型。不能定义引用类型的引用,但可以定义任何其它类型的引用。
引用必须用与该引用同类型的对象初始化:

int ival = 1024;
int &refVal = ival;
int &refVal2; /eroor: a reference must be initialized
int &refVal3 = 10; //eroor: initializer must be an object.
引用只是别名
refVal +=2 int ii = refVal;

当引用初始化后,只要该引用存在,它就保持绑定到初始化时指向的对象。不可能将引用 绑定到另一个对象。

const引用是指向const对象的引用;
const int ival = 1024;
const int &refVal = ival; // ok;
int &ref2 = ival; // error;

非const引用只能绑定到与该引用同类型的。const引用可以初始化为不同类型的对象或者初始化为右值,如
int i = 42;
// legal for const references only
const int &r = 42;
const int &r2 = r+1;
const引用是只读的,
比如
double dval = 3.14;
const int &ri = dval;
编译器会转换成如下形式的编码:
int temp = dval; // create temporary int from the double
const int &ri = temp; // bind ri to that temporary
对ri的修改不会修改dval,只支修改temp.
// legal for const

const量必须在定义初始化。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值