泛型编程与C++标准库-Read.doc

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
泛型编程与C++标准库-Read.doc

表 达 式 目录 5.1 算术操作符 129 5.2 关系操作符和逻辑操作符 131 5.3 位操作符 134 5.4 赋值操作符 137 5.5 自增和自减操作符 140 5.6 箭头操作符 142 5.7 条件操作符 143 5.8 sizeof操作符 144 5.9 逗号操作符 145 5.10 复合表达式的求值 145 5.11 new和delete表达式 150 5.12 类型转换 154 小结 161 术语 162 C++提供了丰富的操作符,并定义操作数为内置类型时,这些操作符的含义。除此之外,C++还支持操作符重载,允许程序员自定义用于类类型时操作符的含义。标准库正是使用这种功能定义用于库类型的操作符。 本章重点介绍C++语言定义的操作符,它们使用内置类型的操作数;本章还会介绍一些标准库定义的操作符。第14章将学习如何定义自己的重载操作符。 表达式由一个或多个操作数(operand)通过操作符(operator)组合而成。最简单的表达式(expression)仅包含一个字面值常量或变量。较复杂的表达式则由操作符以及一个或多个操作数构成。 每个表达式都会产生一个结果(result)。如果表达式中没有操作符,则其结果就是操作数本身(例如,字面值常量或变量)的值。当一个对象用在需要使用其值的地方,则计算该对象的值。例如,假设ival是一个int型对象: if (ival) // evaluate ival as a condition // .... 上述语句将ival作为if语句的条件表达式。当ival为非零值时,if条件成立;否则条件不成立。 对于含有操作符的表达式,它的值通过对操作数做指定操作获得。除了特殊用法外,表达式的结果是右值(2.3.1节),可以读取该结果值,但是不允许对它进行赋值。 操作符的含义——该操作符执行什么操作以及操作结果的类型——取决于操作数的类型。 除非已知道操作数的类型,否则无法确定一个特定表达式的含义。下面的表达式 i + j 既可能是整数的加法操作、字符串的串接或者浮点数的加法操作,也完全可能是其他的操作。如何计算该表达式的值,完全取决于i和j的数据类型。 C++提供了一元操作符(unary operator)和二元操作符(binary operator)两种操作符。作用在一个操作数上的操作符称为一元操作符,如取地址操作符()和解引用操作符(*);而二元操作符则作用于两个操作数上,如加法操作符(+)和减法操作符(-)。除此之外,C++还提供了一个使用三个操作数的三元操作符(ternary operator),我们将在5.7节介绍它。 有些符号(symbol)既可表示一元操作也可表示二元操作。例如,符号*既可以作为(一元)解引用操作符,也可以作为(二元)乘法操作符,这两种用法相互独立、各不相关,如果将其视为两个不同的符号可能会更容易理解些。对于这类操作符,需要根据该符号所处的上下文来确定它代表一元操作还是二元操作。 操作符对其操作数的类型有要求,如果操作符应用于内置或复合类型的操作数,则由C++语言定义其类型要求。例如,用于内置类型对象的解引用操作符要求其操作数必须是指针类型,对任何其他内置类型或复合类型对象进行解引用将导致错误的产生。 对于操作数为内置或复合类型的二元操作符,通常要求它的两个操作数具有相同的数据类型,或者其类型可以转换为同一种数据类型。关于类型转换,我们将在5.12节学习。尽管规则可能比较复杂,但大部分的类型转换都可按预期的方式进行。例如,整型可转换为浮点类型,反之亦然,但不能将指针类型转换为浮点类型。 要理解由多个操作符组成的表达式,必须先理解操作符的优先级(precedence)、结合性(associativity)和操作数的求值顺序(order of evaluation)。例如,表达式 5 + 10 * 20/2; 使用了加法、乘法和除法操作。该表达式的值取决于操作数与操作符如何结合。例如,乘法操作符*的操作数可以是10和20,也可以是10和20/2,或者15和20、15和20/2。结合性和优先级规则规定了操作数与操作符的结合方式。在C++语言中,该表达式的值应是105,10和20先做乘法操作,然后其结果除以2,再加5即为最后结果。 求解表达式时,仅了解操作数和操作符如何结合是不足够的,还必须清楚操作符上每一个操作数的求值顺序。每个操作符都控制了其假定的求值顺序,即,我们是否可以假定左操作数总是先于右操作数求值。大部分的操作符无法保证某种特定的求值次序,我们将于5.10节讨论这个问题。

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档