精华内容
下载资源
问答
  • 如果同时定义了两个函数,一个带const,一个不带,...在条件中,非布尔类型转换为布尔类型 在初始化过程中,初始值转换为变量类型 算数转换:一般来说,会将较小算数类型转换为较大算数类型,如int转换为double
    如果同时定义了两个函数,一个带const,一个不带,会有问题吗

    不会,相当于函数重载

    什么是隐式转换
    1. 在c++中,不会将两个不同类型的值相加,而是先根据类型转化规则,设法将运算对象统一之后,再求值,上述的类型转化是自动执行的,不需要程序员介入,因此被称作隐式转化
    2. 隐式转换发生的时机:
      1. 大多数情况下,比int小的整型将会转化为较大的整数类型
      2. 在条件中,非布尔类型转换为布尔类型
      3. 在初始化的过程中,初始值转换为变量类型
    3. 算数转换:一般来说,会将较小的算数类型转换为较大的算数类型,如int转换为double,float转换为double等
    4. 数组转换为指针
    5. 算数类型或指针类型转为布尔类型
    6. 类类型的转换 ,可以把字面值转换为string等

    如果想要取消隐式转化,需要使用explicit进行声明

    说说你了解的类型转换

    隐式转化和显式转换
    显式类型转化

    请你回答一下new/delete与malloc/free的区别是什么
    void *operator new(size_t);     //allocate an object
    void *operator delete(void *);    //free an object
    
    void *operator new[](size_t);     //allocate an array
    void *operator delete[](void *);    //free an array
    
    

    上面四个是c++的库函数

    1. new:当我们使用new的时候,背后完成的工作是
      1. 调用库函数new,传入参数,开辟一个size_t大小的空间,返回的是这个空间的起始地址
      2. 调用构造函数,由于上一步开辟的空间是没有初始化的,因此第二部就是调用构造函数,将内存中的数据初始化
      3. 最后一步就是返回构造好的新的对象的指针
    2. delete:当使用delete的时候,背后完成的工作是
      1. 首先是通过指针来调用类的析构函数
      2. 然后调用上面的库函数,传入的是指针的地址,然后释放对应的内存
    3. malloc:malloc是c中的库函数,他无法调用类的构造函数,他所做的仅仅是为变量分配内存空间
    4. free:free是c的库函数,无法调用类的析构函数,他做的仅仅是释放malloc所开辟的内存
    什么是RTTI

    RTTI(Run Time Type Identification)就是运行时类型识别,产生的原因就是有的时候静态类型与动态类型并不匹配,所以就需要在运行的时候,通过编译器,自动识别应该匹配的类型,比如说虚函数的调用,基类转换为派生类,他是通过typeid和dynamic_cast体现出来的,typeid方法通过type_info来返回指针真正的类型,而dynamic_cast 是将基类的指针或引用安全的转换为转换为其派生类的指针或引用

    展开全文
  • C++隐式类型转换

    2019-08-18 22:03:57
    编译器自动完成转换,需要特别注意转换的效果是否符合预期。 三、什么时候发生隐式转换 条件语句中,非bool转换成boolif(998)->if(true) 初始化语句中,初始值转换成变量类型 int pi=3.14->int pi=3 赋值语句...

    一、什么是隐式转换?

    隐式转换是编译器完成的,帮助程序继续完成任务的一个手段。

    二、怎么使用隐式转换?

    编译器自动完成转换,需要特别注意转换的效果是否符合预期。

    三、什么时候发生隐式转换

    • 条件语句中,非bool转换成boolif(998)->if(true)
    • 初始化语句中,初始值转换成变量类型 int pi=3.14->int pi=3
    • 赋值语句中,右侧对象转换成左侧对象,double pi;pi=3->double pi=3.000000000000000
    • 关系、算术运算符类型不一样,都转换成同一类型。int + double + double->double+double+double
    • 函数调用时,实参转换成形参类型。
    • 构造函数仅有一个参数且没有被声明为explicit的函数,出现参数不匹配时进行的一步转换

    四、分类

    4.1 算术类型隐式转换

    对象的类型定义了对象所能包含的数据和参与的运算,一种运算能够被大多数对象支持靠的就是转换,将操作数两边的转成同一类型再进行运算。如:

    double+int->double+double
    

    一个重要规则就是:运算符对象将会转换成两者中最宽的类型。

    4.2 初始化隐式转换

    初始化时,初始值向声明的变量类型转换。

    4.3 其他类型隐式转换

    • 数组转为指针。
    • 指针的转换。整数0(NULL)或nullptr转换成任意指针;非常量指针转换成void *’;任意指针转换成const void *,继承关系基类和派生类转换;指针转换成bool(条件语句)
    • 转换成常量。int i;const int &j=i,“虽然你不是常量,但是我可以把你看成是常量”。
    展开全文
  • 分类:数据类型转换可以分为隐式转换(自动类型转换)和显式转换(强制类型转换)两种。 二、如何理解隐式转换? 【1】需要满足什么条件? 两种数据类型兼容 最终类型取值范围大于源数据类型(低级类型...

    一、什么情况会出现类型转换?

    情形:类型的转换是在等号左边和等号右边的变量数据类型不一致的时候发生

    分类:数据类型的转换可以分为隐式转换(自动类型转换)和显式转换(强制类型转换)两种。


    二、如何理解隐式转换?


    【1】需要满足什么条件?

    1. 两种数据类型兼容

    2. 最终类型的取值范围大于源数据类型(低级类型数据转换成高级类型数据)

    • byte 类型的数据赋值给 short 类型的变量时,由于 short 类型的取值范围比较大,这里会发生隐式转换
    byte varB = 1 Byte;
    short varS =  varB;		\\类型从byte转为short
    

    数据类型的级别规定如下(从左到右的转换顺序):

    • 数值类型的数据转换:byte—>short—>int—>long—>float—>double
    • 字符类型转换为整数:char——>int

    三、如何理解显式转换?


    【1】什么情况下需要?

    无法进行隐式类型转换时:

    • 当两种类型的数据不兼容时,或者目标类型的取值范围小于源类型时,就无法进行隐式转换
      int i = 1;
      double d = 1.1;
      i = (int)d;	
      

    上一篇

    008 — 如何理解自动装箱?以及它的优点?

    下一篇

    展开全文
  • 使用变量的步骤八种基本数据类型(原声类):发生自动类型转换的条件是什么?如何进行强制类型转换?数据类型有那两种?区别是什么?基本数据类型和引用数据在内存分配上有什么不同?运算符分为几种?有哪些?运算符...

    java程序的跨平台原理

    java虚拟机是跨平台的,java虚拟机将我们写的java程序翻译成计算机听的懂的语言去让计算机执行。

    什么是变量?

    变量是一个数据存储空间的表示,通过变量名可以简单迅速的找到它存储的数据

    使用变量的步骤

    第一步:声明变量 (数据类型 变量名;) --> 根据数据类型在内存申请空间
    第二步:赋值 (变量名=值;) -->将数据存储至对应的内存空间
    以上两步可以合并 (数据类型 变量名=值;)
    第三部:使用变量 --> 取出数据使用

    八种基本数据类型(原声类):

    byte 1字节 char 2字节
    short 2字节 int 4字节
    long 8字节 L/l 结尾 float 4字节 F/f 结尾
    double 8字节 D/d 结尾 boolean true false

    发生自动类型转换的条件是什么?

    情况1:如果一个操作数为double,那么整个表达式提升为double型
    情况2:两种类型兼容(如整形和浮点型),并且目标类型大于原类型(如double大于int)。

    如何进行强制类型转换?

    int a=10; double b=1.1;
    int c=a+(int)b; //把类型大的转换成类型小的
    注意:
    已知 Teacher 和 Student 都是类 Person 的子类
    Person t = new teacher();
    Student s = (Student) t ;
    这种写法编译不会报错,但在运行时会报错,没有继承关系不能强制类型转换

    数据类型有那两种?区别是什么?

    基本数据类型: 不具有方法
    int i = 8; i = i+20;
    引用数据类型: 具有方法
    Student stu = new Student(); stu.age=20;

    基本数据类型和引用数据在内存分配上有什么不同?

    对于基本数据类型(八种基本数据类型 – 栈区):
    不同的变量会分配到不同的空间,互不影响
    对于引用数据类型(数组、对象 – 堆区):
    赋值是把原对象的引用传递给另一个引用,当两个引用指向同一块内存空间时,修改一个变量的值会影响到另一个变量。

    运算符分为几种?有哪些?

    运算符分为三种:
    逻辑运算符
    算术运算符
    关系运算符

    逻辑运算符包括:
    & 与 、| 或 、! 非 、&& 短路与 、|| 短路或

    算数运算符包括:
    +、-、*、/、%、++、–、+=、-=、**=、/=、%=

    关系运算符包括:
    大于 > 、小于<、大于等于>=、小于等于<=、等于==、不等!=

    算术运算符中 “ / ” 和 “ % ” 的区别:
    /: 求商 5/2=2
    %: 取余 5/2=1

    运算符的优先级:

    小括号 () > 非 ! > 算术运算符 > 关系运算符 > 短路与 && > 短路或 || > 赋值运算符 =

    三元运算符:

    本质上是一个 if - else 结构
    语法: 类型名 变量名=(条件表达式) ? 表达式1 : 表达式2 ;
    说明: 当条件为真值,就把表达式1 赋值给变量,否则就把表达式2赋值给变量。表达式1和表达式2的结果类型必须与变量的类型保持一致

    instanceof运算符:

    运算符的左边是一个对象,右边是一个类
    判断的是左边的对象是否是右边的类类型的对象,返回boolean

    展开全文
  • 什么是变量? 值可以改变的量 如何声明变量、给变量赋值和使用变量? String a="变量" ...Java中常用的数据类型有...发生自动类型转换的条件是什么? 两种类型兼容 例如:int 和 double 兼容 目标类型大于源类型
  • 5.12.1 何时发生隐式类型转换 5.12.2 算术转换 5.12.3 其他隐式转换 5.12.4 显式转换 5.12.5 何时需要强制类型转换 5.12.6 命名强制类型转换 5.12.7 旧式强制类型转换 第6章 语句 6.1 简单语句 6.2 声明...
  • 5.12.1 何时发生隐式类型转换 5.12.2 算术转换 5.12.3 其他隐式转换 5.12.4 显式转换 5.12.5 何时需要强制类型转换 5.12.6 命名强制类型转换 5.12.7 旧式强制类型转换 第6章 语句 6.1 简单语句 6.2 声明...
  • 我试了类型转换,但是不行。 81 第5章 空指针 82 空指针和空指针常量 82 5.1 臭名昭著空指针到底是什么? 82 5.2 怎样在程序里获得一个空指针? 83 5.3 用缩写指针比较“if(p)”检查空指针是否有效?如果空...
  • 我试了类型转换,但是不行。 81 第5章 空指针 82 空指针和空指针常量 82 5.1 臭名昭著空指针到底是什么? 82 5.2 怎样在程序里获得一个空指针? 83 5.3 用缩写指针比较“if(p)”检查空指针是否有效?如果空...
  • 你必须知道495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    我试了类型转换,但是不行。 第5章 空指针 空指针和空指针常量 5.1 臭名昭著空指针到底是什么? 5.2 怎样在程序里获得一个空指针? 5.3 用缩写指针比较“if(p)”检查空指针是否有效?如果空指针内部...
  • 我试了类型转换,但是不行。  第5章 空指针  空指针和空指针常量  5.1 臭名昭著空指针到底是什么?  5.2 怎样在程序里获得一个空指针?  5.3 用缩写指针比较“if(p)”检查空指针是否有效?如果空指针...
  • 我试了类型转换,但是不行。 第5章 空指针 空指针和空指针常量 5.1 臭名昭著空指针到底是什么? 5.2 怎样在程序里获得一个空指针? 5.3 用缩写指针比较“if(p)”检查空指针是否有效?如果空指针内部...
  • 《你必须知道495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    我试了类型转换,但是不行。 52 第5章 空指针 53 空指针和空指针常量 53 5.1 臭名昭著空指针到底是什么? 53 5.2 怎样在程序里获得一个空指针? 54 5.3 用缩写指针比较“if(p)”检查空指针是否有效?...
  • 载操作符成员函数如何被用来管理类的类型转换的。 第12章:类和动态内存分配 一般来说,让类成员指向动态分配的内存很有用。如果程序员在类构造函数中使用new来分配动态内存,就 有责任提供适当的析构函数,...
  • 面向对象(2)多态

    2018-09-06 19:51:16
    ①什么是多态? 专业的描述:在继承的条件下、具有多种行为表现的集合特征 举例: 动物是父类, 猫狗羊是其子类, ...三种动物都会叫, ...语法要求是什么?...语法要求:无需进行强制类型转换,而是自动...
  • 载操作符成员函数如何被用来管理类的类型转换的。 第12章:类和动态内存分配 一般来说,让类成员指向动态分配的内存很有用。如果程序员在类构造函数中使用new来分配动态内存,就 有责任提供适当的析构函数,...
  • 我试了类型转换,但是不行。 52 第5章 空指针 53 空指针和空指针常量 53 5.1 臭名昭著空指针到底是什么? 53 5.2 怎样在程序里获得一个空指针? 54 5.3 用缩写指针比较“if(p)”检查空指针是否有效?...
  • 载操作符成员函数如何被用来管理类的类型转换的。 第12章:类和动态内存分配 一般来说,让类成员指向动态分配的内存很有用。如果程序员在类构造函数中使用new来分配动态内存,就 有责任提供适当的析构函数,...
  • 载操作符成员函数如何被用来管理类的类型转换的。 第12章:类和动态内存分配 一般来说,让类成员指向动态分配的内存很有用。如果程序员在类构造函数中使用new来分配动态内存,就 有责任提供适当的析构函数,...
  • 也就是说,把初始化语句放在只有if块的条件判断语句中编译器也会抗议,因为执行的时候可能不符合if后面的判断条件,如此一来初始化语句就不会被执行了,这就违反了局部变量使用前必须初始化的规定。但如果在else块中...
  • 引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象类是否实现了接口。 21、heap和stack有什么区别。  栈一种线形集合,其添加和删除元素操作应在同一段完成。栈按照后进先出...
  • C语言科学和艺术.pdf

    热门讨论 2012-01-19 14:09:05
    2.5.9 类型转换 37 小结 39 复习题 40 程序设计练习 41 第3章 问题求解 44 3.1 程序设计习语和范例 44 3.1.1 复合赋值习语 45 3.1.2 自增和自减运算符 47 3.2 解决规模稍大问题 47 3.3 控制语句 48 ...
  • 晶振两边的电容:晶振的标称值在测试时有一个“负载电容”的条件,在工 作时满足这个条件,振荡频率才与标称值一致。一般来讲,有低负载电容(串 联谐振晶体),高负载电容(并联谐振晶体)之分。在电路上的特征为:...
  • 对这样设计出来数据库,只需多问几个为什么——业务模型如何体现?数据完整性如何保证?性能如何权衡?——恐怕设计者就该崩溃了。.  这也难怪,设计、开发人员在学校中学习数据库时,理论书籍离实际...
  • 对这样设计出来数据库,只需多问几个为什么——业务模型如何体现?数据完整性如何保证?性能如何权衡?——恐怕设计者就该崩溃了。.  这也难怪,设计、开发人员在学校中学习数据库时,理论书籍离实际...
  • 【mysql基础系列十八】触发器

    千次阅读 2018-07-07 02:27:43
    提前给某张表所有记录(行)绑定一段代码,如果该行操作满足条件(触发前置条件),这段代码提前准备好代码就会自动执行。那么它有什么作用呢?1、可以在写入数据表前,强制检验或转换数据。(保证数据安全)2...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 135
精华内容 54
关键字:

发生自动类型转换的条件是什么