类型转换
  • C++类型转换主要包含两种:

    • 隐式类型转换

      • 小类型向大类型转换

        • char -> int

        • short ->int

        • int -> unsigned int

        • int -> float

        • float ->double

    • 显示类型转换

      • const_cast:移除变量的const属性

      • static_cast:完成基础数据类型,同一个继承体系中类型的转换,任意类型与空指针类型void*之间的转换

      • dynamic_cast:使用多态的场景,有继承,有虚函数,向下转型时使用

      • reinterpret_cast:改变指针或引用的类型,不知道用哪一个类型转换就用它

  • 普通类型和类类型之间的转换,类类型之间的转换

    • 转换构造函数:将其他类型转换为类类型

      • 一种特殊的构造函数

      • 只有一个参数

      • 使用explicit就可以限制构造函数的隐式类型转换

    • 类型转换函数:将类类型转换为其它类型

    • 将成员函数作为类型转换函数,如:int toNumber()

    • 当同时定义转换构造函数和类型转换函数时,编译器会报错,处理方法:

      • 一个类定义转换构造函数,一个类定义类类型转换函数,提供两种方式转换,此时编译器报错

      • 声明构造函数为explicit

      • 用型如int toNumber()的成员函数代替类型转换函数

 #include <iostream>
#include <string> using namespace std; class Test
{
int mi;
public:
Test(int i = ) //转换构造函数
{
mi = i;
} int toInt() //成员函数作为类型转换函数
{
return mi;
} operator int() //类型转换函数
{
return mi;
}
}; int main()
{
Test t; t = ; //编译器会隐式调用转换构造函数 int x = t; //编译器会隐式调用类型转换函数 int y = t.toInt(); //显式调用成员函数 return ;
}

C++语法小记---类型转换的更多相关文章

  1. Jinja2语法小记

    jinja2模板语法小记 Jinja2模板中文文档 三种常见界定符 表达式 {{ ... }} 用于装载字符串.变量.函数调用等 语句 {% ... %} 用于装载控制语句,比如if判断.for循环等 ...

  2. C++语法小记---开篇

    几句闲话 由于C++的语法非常的复杂,但是实际使用的过程中,经常使用的语法也就那么一些,还有比较多的语法很少被使用,时间一长就容易忘记,因此“C++语法小记”主要是将C++中不经常使用和容易忘记的语法 ...

  3. HTML基础--JS简介、基本语法、类型转换、变量、运算符、分支语句、循环语句、数组、函数、函数调用.avi

    JS简介 1.JavaScript是个什么东西? 它是个脚本语言,需要有宿主文件,它的宿主文件是HTML文件. 2.它与Java什么关系? 没有什么直接的联系,Java是Sun公司(已被Oracle收 ...

  4. Java基础语法:类型转换

    由于Java是强类型语言,所以有时候在进行运算时,需要用到类型转换. 整型.常量.字符类型数据可以混合运算. 运算中,不同类型的数据先转化为同一类型,然后再进行运算. 类型转换等级有低级到高级的划分, ...

  5. WINDOWS Server2008上部署Oracle10g及oracle SQL语法小记

    首先安装10G客户端 情况一:一般都会安装到一般报错.因为10G是32BIT客户端.而操作系统是64位的.但是不会影响配置监听程序.自主开发的应用程序依然可以运行. 情况二:报错但是配置完监听程序始终 ...

  6. Swift2.1 语法指南——类型转换

    原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programmi ...

  7. CSS语法小记

    一.CSS语法结构 语法:选择符{属性:值} 例如:body{font-size:12px;} 参数说明: 1.选择符(Selector):指明这组样式所要针对的对象.可以是一个XHTML标签,例如h ...

  8. js简介、基本语法、类型转换、变量、运算符、分支语句、循环语句、函数、函数调用

    javascript是个脚本语言,需要有宿主文件,他的宿主文件是html文件. 三个常用对话框 alert("")警告对话框,弹出一个警告对话框 <script> al ...

  9. Python 3语法小记(四)字典 dictionary

    字典是Python里面一种无序存储结构,存储的是键值对 key - value.关键字应该为不可变类型,如字符串.整数.包含不可变对象的元组. 字典的创建很简单,用 d = {key1 : value ...

随机推荐

  1. Zookeeper客户端Apache Curator

    本文不对Zookeeper进行介绍,主要介绍Curator怎么操作Zookeeper. Apache Curator是Apache ZooKeeper的Java / JVM客户端库,Apache Zo ...

  2. MyBatis一对多嵌套list返回结果集以及分页查询问题处理

    这两天在整理原有系统接口时,遇到后端的人员-角色-菜单的权限接口没有进行连表的关联查询操作,前端拿数据非常不方便,现在将接口相关sql进行修改并让前端可以一次性拿到想要的数据 原有的单表简单sql: ...

  3. JavaWeb网上图书商城完整项目--day02-11.激活功能流程分析

    1.当用户注册成功之后,会给用户发送邮件,当用户点击邮件的激活按钮的时候,会调用UserServlet中的activation的方法,并且会把激活码传递到后台,后台业务层对业务进行操作

  4. jvm基础知识—垃圾回收机制

    1.首先类的实例化.static.父类构造函数执行顺序 我们来看下面的程序代码: public class A { int a1 = 8; { int a3 = 9; System.out.print ...

  5. ATM项目分析

    ATM项目分析 项目源代码下载 其实本项目的需求分析乍一看比较复杂,但是细细拆分出来实际实现还是比较容易的.基本用上前面所学的所有知识点. 1.额度 15000或自定义 2.实现购物商场,买东西加入购 ...

  6. Vue数据更新页面没有更新问题总结

    Vue数据更新页面没有更新问题总结 1. Vue无法检测实例别创建时不存在于data中的property 原因: 由于Vue会在初始化实例时对property执行getter/setter转化,所以p ...

  7. VMware 15安装Ubuntu 16.04并配置环境

    VMware(虚拟机)是指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统,它能在Windows系统上虚拟出多个计算机,每个虚拟计算机可以独立运行,可安装各种软件与应用等 ...

  8. vue全家桶(1)

    1.环境搭建 1.1.脚手架搭建 1.1.1什么是脚手架 百度搜索一下脚手架长什么样子,它们是这样的: 从百度百科抄过来一段话: 脚手架是为了保证各施工过程顺利进行而搭设的工作平台.如果明白了脚手架在 ...

  9. 写给程序员的机器学习入门 (七) - 双向递归模型 (BRNN) - 根据上下文补全单词

    这一篇将会介绍什么是双向递归模型和如何使用双向递归模型实现根据上下文补全句子中的单词. 双向递归模型 到这里为止我们看到的例子都是按原有顺序把输入传给递归模型的,例如传递第一天股价会返回根据第一天股价 ...

  10. 浅谈dfs

    搜索(dfs) 搜索分为bfs与dfs 他们的算法思路都是相同的--穷举 可以说,搜索是万能的,但是复杂度往往是指数级的,往往是穷途末路才用的最后方案 dfs dfs核心操作:回溯+前进 想想你第一次 ...