类型强制

原创 2001年07月03日 22:03:00

     类型强制将一种类型的值映射为另一种类型的值,类型之间的这种映射关系是在定义类型时指定的。构造函数的类型强制特性:

      设T类有如下形式的构造函数:

      T::T(U)

      T::T(const U&)

      这个构造函数创建一个T类型的对象,这个对象使用U类型的值来初始化。当在一个表达式中需要T类型的操作数,而程序员却提供了U类型的操作数,编译器能自动的使用这个构造函数由U类型的操作数建立一个T类型的操作数,所以,这种形式的构造函数具有类型强制作用。例如:

         file://myclass.h

         #include<iostream.h>

         class MyClass

         {public:

                MyClass(int i=0);

                void Print() const;

                 ~MyClass();

            private:

                 int m;

};

           file://myclass.cpp

           #include "myclass.h"

           MyClass::MyClass(int i )

          {m=i;

            cout<<"Constructor called."<<m<<endl;}

           void MyClass::Print() const

          {cout<<m<<endl;}

           MyClass::~MyClass()

           {cout<<"Destructor called."<<m<<endl;}

          现在考察下面的程序。在这个程序中,函数fun()带有一个引用参数,但在调用函数fun时,所使用的实参不是一个同类型的左值表达式。

          #include <iostream.h>

         #include "myclass.h"

         void fun(const MyClass& c);

         int main()

        {fun(5);

          return 0;}

         void fun(const MyClass& c)

        {c,Print();}

         程序的运行结果为:

         Construct Called. 5

          5

          Destruct Called. 5

           函数fun()使用了基类型为MyClass的引用参数,它要求它的调用者在调用该函数时提供类型为MyClass的操作数,但我们的程序中,实参的类型为int,所以,编译器生成有关的代码进行类型强制,强制的结果是在main()函数中(强制发生的环境中)建立了一个MyClass类型的匿名对象,形参c引用到该匿名对象上。

      

 

 

           

            

 

     

1067: spark.components:NavigatorContent 类型值的隐式强制指令的目标是非相关类型 String

1、错误描述 此行的多个标记: -workId -1067: spark.components:NavigatorContent 类型值的隐式强制指令的目标是非相关类型 String。 2、错误原因 ...
  • you23hai45
  • you23hai45
  • 2014年10月09日 23:43
  • 1715

强制类型装换

强制类型装换  byte b = 4 b = b +5 会报错 因为没有类型转换 b是一个 byte类型只有一个八位 5是一个int类型占四个八位最后相加 赋值给byte类型的b所以会报错。 byte...
  • qq_39661542
  • qq_39661542
  • 2017年08月29日 00:00
  • 64

逐梦C++之四:四种强制类型转换

1.总括四种强制类型转换static_cast const_cast dynamic_cast reinterpret_cast2.static_caststatic_cast是最常用的强制类型转换,...
  • qq_31680779
  • qq_31680779
  • 2016年02月02日 18:01
  • 299

强制类型的转换

强制类型转换 double x=9.97; int nx=(int) x; 若想四舍五入则需要 double x=9.97; int nx=(int)Math.round(x);...
  • yangmingqin
  • yangmingqin
  • 2015年01月09日 14:41
  • 47

java中的强制类型转换

数据类型的转换,分为自动转换和强制转换。自动转换是程序在执行过程中 “ 悄然 ” 进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换;强制类型转换则必须在代码中声明,转换顺序不受限...
  • weijinqian0
  • weijinqian0
  • 2016年09月07日 14:34
  • 836

C语言 数据类型转换 自动转换 vs 强制转换

C语言中强制数据类型转换的总结  [软件开发] 发布时间:2008-05-18 13:37:46   ● 字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128~127,ch...
  • liupeng900605
  • liupeng900605
  • 2012年05月16日 17:03
  • 1431

java 如何将List<objetct>类型强制转为新的List<实体类>

Object类型的强制转换为新的List类型,一开始对我来说一脸懵逼,在网上找了好多资料,都不太行。 因为使用hibernate的多表查询,所以需要将Object类型进行强制转新的List 后来发...
  • qq_35164294
  • qq_35164294
  • 2017年12月24日 23:09
  • 51

JAVA强制类型转换总结

object对象转换为String的一些总结 ----------------------------------------------------------------------------...
  • defineshan
  • defineshan
  • 2016年08月29日 02:15
  • 1289

AS3 强制类型转换

每一种编程语言都提供强制类型转换,允许你将某一种数据类型转换成另一种数据类型,AS3自然也不例外。但是虽然我编写了不少Flex程序,对AS3中的强制类型转换还是不太清楚,以前AS中是这样进行强制类型转...
  • fuhaojing
  • fuhaojing
  • 2010年09月30日 22:34
  • 2077

强制类型转换与非强制类型转换后出现的问题

让我意识到这个问题是做了一道求标准差的题目,本来题目要求精度不高,答案却总是相差一些。和室友进行比较,发现大致思路一样,并不是很麻烦要用高精度算法求解的。 先上代码:#include #inclu...
  • qq_36328643
  • qq_36328643
  • 2016年10月31日 20:57
  • 171
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:类型强制
举报原因:
原因补充:

(最多只允许输入30个字)