2021-06-28C++ primer学习第三天

学习目标:

const的学习与理解

学习内容:

const限定符

学习时间:

6.28

学习内容:

1、const的引用:称之为对常量的引用,对常量的引用不能被用作修改它所绑定的对象。如果一个非常量引用指向一个常量引用将会发生错误。
2、引用的类型必须与其引用对象的类型一致。第一种例外情况就是在初始化常量引用时允许任意表达式作为初始值,只要该表达式的结果可以转换成引用的类型即可。
3、对const 的引用可能引用一个并非const的对象

int i = 1int &r1 = i;         //引用r1绑定对象i
const int &r2 = i;   //引用r2绑定对象i,但是不运行通过r2修改i的值
r1 = 0;              //r1并非常量,i的值修改为0;
r2 = 0;              //错误:r2 是一个常量引用

4、指向常量的指针:不能通过该指针改变对象的值。

const double pi = 3.14double *ptr = π        //错误
const double *cptr = & pi; //正确
*cptr = 42;                //错误:不能给*cptr赋值

5、常量指针:把指针本身定义为常量。常量指针必须初始化!!!,而且一但完成,它的值(存放指针中的那个地址)不会改变。把*放在const前说明指针是一个常量。不变的是指针本身的那个值,而非指向的那个值.

int errnumb = 0;
int *const curtrr = &errnumb;      //curerr 将一直指向errnumb。
const double pi = 3.14259;
const double *const pip = π    
//pip是一个指向常量的常量指针。本身存储地址不能修改,指向对象的值也不能修改

判断方法从右向左读,

6、对于指针来说
顶层const:表示指针本身是个常量。
底层const:表示指针所指的对象是一个常量。
7、constexpr和常量表达式:指值不会改变并且在编译过程中就能得到结果的表达式。关键字constexpr会把它定义的对象置为顶层const。(比如常量指针)
8、类型别名:传统的使用方式是使用关键字typedef

typedef double wages; // wages是double的同义词

新规定的第二种办法为别名声明:using

using SI = Sales_item;

9、auto 让编译器通过初试值来推断变量的类型。使用auto在一条语句中声明多个变量。因为一条声明只能有一个基本数据类型,所以该语句中所有变量的初试基本数据类型都必须一样:

auto i= 0*p = &i; //正确:i是整数,p是整型指针
auto sz = 0,pi = 3.14//错误:sz和pi的类型不一致

10、decltype 从表达式中得到要定义变量的类型,但是不用该表达式初试化变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值