计算机二级辅导:C 中用户定义的转换计算机二级考试

文章作者 100test 发表时间 2009:06:17 20:10:13
来源 100Test.Com百考试题网


  编辑特别推荐:

  全国计算机等级考试(等考)指定教材

  全国计算机等级考试学习视频

  全国计算机等级考试网上辅导招生

  全国计算机等级考试时间及科目预告

  百考试题教育全国计算机等级考试在线测试平台

  全国计算机等级考试资料下载

  全国计算机等级考试论坛

  计算机等级考试四级应用题解析汇总

  2009年下半年全国计算机二级考试报名时间从6月1日起已经开始报名。详情点击:2009年下半年全国计算机等级考试各地报名点汇总。2009年下半年全国计算机二级考试时间是2009年9月19日至23日。更多优质资料尽在百考试题论坛 百考试题在线题库

  (1)用户定义的转换的必要性:
  我们希望能够在SmallInt对象和其他SmallInt对象或者内置算术类型的对象之间进行加减操作,我们要通过提供6个SmallInt操作符函数来实现对这些操作的支持:
  
  两个成员操作符允许我们加减两个SmallInt对象。友元全局操作符允许我们在SmallInt对象和内置算术类型的对象之间进行加减操作。之所以只需要6个操作符,是因为任何内置算术类型都可以被转换为与int型参数相匹配。
  如果我们还想支持按位操作符、逻辑操作符、关系操作符和复合赋值操作符,则要求的操作符的数目就变得非常可怕了。我们更希望的,不是提供所有的重载操作符,而是一种将SmallInt类对象自动转换成int 型对象的方式。
  C 提供了一种机制,通过它,每个类都可以定义一组“可被应用在该类型对象上的转换”。对于SmallInt,我们定义了一个从SmallInt对象到int型的转换。
  class SmallInt ...{
  public:
  SmallInt( int ival ) : value( ival ) ...{ }
  // 转换操作符
  // SmallInt ==>. int
  operator int() ...{ return value. }
  // 没有提供重载操作符
  private:
  int value.
  }.
  (2)需要注意的地方:
  (a)转换函数必须是成员函数,它的声明不能指定返回类型和参数表。
  operator int( SmallInt &. ). // 错误: 不是成员
  class SmallInt ...{
  public:
  int operator int(). // 错误: 返回类型
  operator int( int = 0 ). // 错误参数表
  // ...
  }.
  (b)显式的类型转换会导致调用转换函数。(须注意在必要的时候将转换类型设置为const,只允许对被转换的类对象进行只读访问)
  #include "Token.h"
  Token tok( "function", 78 ).
  // 函数型的表示法: 调用 Token::operator SmallInt()
  SmallInt tokVal = SmallInt( tok ).
  // static_cast: 调用 Token::operator tName()
  char *tokName = static_cast<. char * >.( tok ).
  (c)如果转换的目标(本例中的double)与转换函数的类型(本例中的int类型)不完全匹配,但目标类型可以通过标准转换序列到达,则仍可调用转换函数。
  extern void calc( double ).
  Token tok( "constant", 44 ).
  // 调用 tok.operator int() 吗? 是的
  // int -->. double 通过标准转换
  calc( tok ).
  (d)使用构造函数作为转换函数。
  extern void func( Number ).
  SmallInt si( 87 ).
  {
  // 调用 Number( const SmallInt &. )
  func( si ).
  }
  当然,可通过在类的构造函数前设置explicit,以禁止将其用来执行隐式转换。

  2009年9月全国计算机等级考试时间及科目预告

  2009年NCRE考试有新变化

  2009年全国计算机等级考试-大纲

  全国计算机等级考试历年真题及答案

  2009年上半年全国计算机等级考试试题及答案



相关文章


全国计算机二级C_C 资料辅导汇总之WinAPI字符及字符串函数计算机二级考试
C_C 数据类型转换:PowerBuilder数据类型计算机二级考试
计算机二级辅导:C 中用户定义的转换计算机二级考试
C 中的类静态成员和静态成员函数计算机二级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛