c++Primer读书笔记(第四章 表达式)

4.1基础

4.1.1 基本概念

一元运算符:取地址符(&)、解引用符(*)
二元运算符:相等运算符(==)

二元运算时小整数类型(如bool、char、short等)通常会被提升(promoted)成较大的整数类型(如int)

重载运算符

当运算符作用于类类型的运算对象时,用户可以自行定义其含义。

左值和右值:当一个对象被用作右值的时候,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存中的位置)

4.5 递增和递减运算符

递增和递减有两种形式
除非必须,否则不用递增递减运算符的后置版本

  • 前置版本:首先将运算对象加(减)1,然后将改变后的对象作为求值结果。
  • 后置版本:先将求职结果设置为对象改变之前的副本,然后执行运算对象加(减)1。

4.6 成员访问运算符

ptr->men 等价于 (*ptr).men

4.8 位运算符

在这里插入图片描述

4.9 sizeof运算符

返回一条表达式或一个类型名字所占的字节数

4.11 类型转换

隐式转换无需程序员介入。

4.11.1算数转换

把一种算数类型转换成另一种算数类型

整形提升:负责把小整数类型转换成较大的整数类型

4.11.3显示转换

使用某种方法将某个对象强制转化为double,称为强制类型转换(cast)

static_cast

任何具有明确定义的类型转换,只要不包含底层const,都可以使用static_cast

double a=static_cast<double>(j)/i

一般编译器发现一个较大的算数类型试图赋值给较小的类型的时候,就会给出警告信息。但是当执行了强制转换之后,警告信息就被关闭了。

可以使用static_cast将void*所指向的对象转化为指向对象的类型。

const_cast

只能改变运算对象底层的const(去掉const性质)
不能改变类型

const char *pc;
char *p=const_cast<char*>(pc);

注意:如果对象原本就是常量的话,使用const_cast会产生未定义的后果

reinterpret_cast

为运对象的位模式提供较低层次上的重新解释。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值