《C++primer》笔记 第二章2.4const
2017-02-23 21:12
197 查看
1.constant常量声明的时候必须要初始化
例如:
2.对const常量的引用(reference to const)
引用常量本质上是绑定了一个常数。
常量的引用也必须是常量 因此具有该格式:
本质上常量引用r绑定的是1024,而非buf;
2.1常量引用的初始化
2.2指向常量的指针(pointer to const)
2.3常量指针(const pointer)
与常量引用类似,顾名思义,指针为常量,因此const的对象为ptr
3.const 的拷贝
注意拷贝是变量给变量,变量给常量的内容复制
赋值为常数给变量或者常量的内容赋予
规则:
可以将非常量数复制给常量例如
绝对禁止常量赋值给非常量,const类型无法拷贝给非const类型
例如:
const int buf=1024; //此时buf不再是变量而是一个常量,符合常量的原则
2.对const常量的引用(reference to const)
引用常量本质上是绑定了一个常数。
常量的引用也必须是常量 因此具有该格式:
const int buf=1024; const int &r=buf;//引用也必须为常量,格式与引用对象相同 //引用r,因此不能对r进行赋值的更改(因为是常量),也不能进行对象更改(因为是引用)
本质上常量引用r绑定的是1024,而非buf;
2.1常量引用的初始化
int a=1; const int &r1=a;//允许,常量引用可以被变量初始化; const int &r2=12;//允许,常量引用可以被常量初始化; //需要注意的是一般的引用是不能被常量初始化的; //而常量引用可以被常量初始化,即将常量引用绑定到了一个常量上(符合逻辑)
2.2指向常量的指针(pointer to const)
int a=1; int b=1024 const double* ptr=b;//常量的是double,因此内容不能改变即*ptr是个常量不能改变 ptr=&a;//允许,因为指针ptr并不是常量,地址是可以改变的
2.3常量指针(const pointer)
与常量引用类似,顾名思义,指针为常量,因此const的对象为ptr
int a=1; double* const ptr=&a;//常量的对象是个指针因此ptr永远指向a的地址; //此时可以修改*ptr的值 const double* const ptr1=a;//指针指向的地址和指针内容都为常量 //因此不发更改指针和内容
3.const 的拷贝
注意拷贝是变量给变量,变量给常量的内容复制
赋值为常数给变量或者常量的内容赋予
规则:
可以将非常量数复制给常量例如
int a=1;const int b=a;
绝对禁止常量赋值给非常量,const类型无法拷贝给非const类型
相关文章推荐
- c++primer 学习笔记(第二章)
- c++ primer(第五版)笔记 第二章(4)const, decltype, auto
- SICP学习笔记 - 第二章 (2.4)
- c++ primer 第五版学习笔记-第二章-顶层和底层const
- C++primer 第二章笔记 初稿
- 《C++Primer》笔记 第二章2.3 指针和引用
- C++Primer 学习笔记 第二章(变量和基本数据类型)
- 第二章 变量和基本类型——2.4 const 限定符
- C++primer(第五版) 第二章 学习笔记
- 学习笔记:C++primer 2.4 const限定符
- C++Primer第五版【学习笔记】——第二章 变量和类型
- C++Primer第五版【学习笔记】——第二章 变量和类型
- C++Primer(第二章2.1,2.2,2.3,2.4)总结
- 《C++Primer》笔记 第二章2.5处理类型
- 学习笔记:候捷深入浅出MFC第二章
- C++Primer4笔记
- Inside the C++ Object Model学习笔记[Chap2.4]
- WPF笔记(2.4 Grid)——Layout
- 高效掌握C#笔记[第二章]C#简介
- 关于const的笔记