ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++_Primer_2021.11.27

2021-11-27 13:04:07  阅读:158  来源: 互联网

标签:类型转换 27 2021.11 运算 对象 运算符 cast 强制 Primer


第四章:表达式

显示转换:
static_cast
任何具有明确定义的类型转换,只要不包含底层const,都可以使用static_cast。
常用于替代由编译器隐式执行的类型转换

例如:通过将一个运算对象强制转换成double类型就能使其表达式执行浮点数除法。

const_cast只改变变量属性

reinterpret_cast通常为运算对象的位模式提供较低层次上的重新解释。
把运算对象的内容解释成另外一种类型。这种强制类型转换本质上依赖于机器而且非常危险。

如:
int ip;
char pc = reinterpret_cast<char>(ip);
必须牢记:pc所指的真实对象是一个int而非字符。
由于显示地声称这种转换合法,所以编译器不会发出任何警告或错误信息,接下来再使用
pc时,就会认定它的值是char
类型,编译器没法知道它实际存放的是指向int的指针。

warning:reinterpret_cast本质上依赖于机器。要想安全地使用reinterpret_cast必须对涉及的类型和编译器实现转换的过程都非常了解。

建议:避免强制类型转换
在有重载函数的上下文中使用const_cast无可厚非,在其它情况下使用const_cast意味着程序存在某种涉及缺陷。

每次书写强制类型转换语句,都应该反复斟酌能否以其它方式实现相同的目标。
旧式的强制类型转换:
type(expr); // 函数形式的强制类型转换
(type)expr; // C语言风格的强制类型转换

dynamic_cast和继承及运行时类型识别一起使用。

表达式:将运算符作用于一个或多个运算对象,每个表达式都有对应的求值结果。

只有&&、||、条件和逗号四种运算符明确规定了求值顺序。

重载运算符:针对某种运算符重新定义的适用于类类型的版本。

右值:是一种表达式,其结果是值而非值所在的位置。

短路求值:

sizeof:是一个运算符,返回存储对象所需的字节数。

位与、位或和位异或:都是生成一个新的整型值

++运算符:
前置得到一个左值,给加(减)1后得到运算对象改变之后的值。
后置得到一个右值,给运算符加1并得到运算对象原始的、未改变的值的副本。
<< 运算符:左移运算符,左侧运算对象应该是无符号类型,若带符号,一旦改变符号位,值会发生未定义的结果。

运算符:右移运算符。如果左侧运算对象是带符号类型,那么根据实现的不同新移入的内容也不同,新移入的位可能都是0,也可能都是符号位的副本。

~求反运算符:

标签:类型转换,27,2021.11,运算,对象,运算符,cast,强制,Primer
来源: https://www.cnblogs.com/gwzz/p/15611549.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有