You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
C++11的变量初始化,使用花括号初始化
int a{0}; 等价于int a = 0; 这种形式称为列表初始化
引用
引用定义时必须初始化
引用一旦初始化将不能绑定到其他对象上,不像指针还可以指向其他人
引用不是对象,引用相当于是一个对象别名
引用不能被初始化为另一个引用,因为引用自身不是对象
书上说不能定义一个指针指向引用,但我试了下,可以编译过,正确执行
int a;&b=a;*c=&b; //测试合法
引用类型必须与其引用的对象类型一致
const int a = 1;
cost int &b = a; //正确,引用及其对象都是常量类型
int &c = a; //错误,引用c不是常年类型
const int &d = 1; //正确,1也是一个常量类型
int &e = a * 2; //错误,a*2是一个常量类型 但是: 引用常量可以绑定到一个不是常量的对象上,如
int e = 1;
const int &f = e; //正确,这时就不能通过f修改e的值
猜测
为何C++有引用,C里面的指针提高了效率,但是指针bug也是折磨人,所以引用就是一个不可修改的指针,如 void *const p = &a; p 这个指针定义为常量,无法修改。但是传递时又免去了拷贝的浪费。
初识C++
变量和基本类型
int a{0}; 等价于int a = 0; 这种形式称为列表初始化
引用
int a;&b=a;*c=&b; //测试合法
const int a = 1;
cost int &b = a; //正确,引用及其对象都是常量类型
int &c = a; //错误,引用c不是常年类型
const int &d = 1; //正确,1也是一个常量类型
int &e = a * 2; //错误,a*2是一个常量类型
但是: 引用常量可以绑定到一个不是常量的对象上,如
int e = 1;
const int &f = e; //正确,这时就不能通过f修改e的值
猜测
为何C++有引用,C里面的指针提高了效率,但是指针bug也是折磨人,所以引用就是一个不可修改的指针,如 void *const p = &a; p 这个指针定义为常量,无法修改。但是传递时又免去了拷贝的浪费。
const
The text was updated successfully, but these errors were encountered: