类型转换
  • 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. ASP.NET WebAPI框架解析第一篇

    ASP.NET WebAPI有两种寄宿模式,一种是WebHost,一种是SelfHost,为什么可以有两种模式的原因在于WebAPI有一个相对独立的消息处理管道,只要给这个消息管道传递一个封装好的对象 ...

  2. 一个简单的 react 实例: < TodoList >

    <  react     TodoList:  > 组件: //引入React : import React from 'react'; //组件 class TodoList exten ...

  3. spring boot admin 源码包的编译

    https://github.com/codecentric/spring-boot-admin 下载地址: 编译要求: Build Requirements: Node.js v8.x (LTS) ...

  4. 入门大数据---Hbase搭建

    环境介绍 tuge1 tuge2 tuge3 tuge4 NameNode NameNode DataNode DataNode ZooKeeper ZooKeeper ZooKeeper ZooKe ...

  5. centos 7 增加永久静态路由

    1 在 /etc/sysconfig/network-scripts/ 目录下添加route-eth3,eth3为实际网卡名称. [root@compute1 ~]# cat /etc/sysconf ...

  6. vue全家桶(2.7)

    3.11.1.vue-router中的全局钩子函数 在vue-router中,路由发生变化,我们可以做一些事情,例如:可以决定是否进入导航,可以决定跳转到哪里,官方文档中又叫做导航守卫 首先来看一个全 ...

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

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

  8. 深入理解JavaScript系列(2):揭秘命名函数表达式(转)

    前言 网上还没用发现有人对命名函数表达式进去重复深入的讨论,正因为如此,网上出现了各种各样的误解,本文将从原理和实践两个方面来探讨JavaScript关于命名函数表达式的优缺点. 简 单的说,命名函数 ...

  9. return zero,or ,return non-zero

    it may return a value to its caller, which is in effect the environment in which the program was exe ...

  10. 什么是JDK的SPI机制

    什么是SPI和API Application Programming Interface (API)? The API is the description of classes/interfaces ...