C++类型转换(类型转换函数+类型构造函数)

类型转换函数

类型转换运算符是类的一种特殊成员函数,它负责将一个类类型的值转换成其他类型。

graph LR
类类型--> 类型转换函数 --> 其他类型

类型转换函数的一般形式如下所示:

operator type()const;//类型转换运算符通常不会改变转换对象的内容,所以它一般被定义成 const 类型

其中type表示某种类型。类型转换运算符可以面向任意类型(除了void之外)进行定义,只要该类型能作为函数的赶回类型。因此我们不允许转换成数组或者函数类型,但是允许转换成指针(包括数组指针及函数指针)或者引用类型。

类型转换运算符既没有显式的返回类型,也没有形参,而且必须定义成类的成员函数。

例如:

class AB{
int x;
char y;
public:
AB(int a, char b):x(a), y(b){}
operator char(){
return y;
}
operator int(){
return x;
}
}
AB tmp(1, 1.2);
ans=1+tmp; //ans将会被赋值为2,这里会把tmp转换成int类型,也就是调用了operator int()函数。

转换构造函数

转换构造函数是把其他的类型转换为该构造函数所在的类类型。

graph LR
其他类型 --> 转换构造函数 -->类类型

转换构造函数的形式一般如下:

类型名(其他类型名 变量名);
  1. 转换构造函数也是一种构造函数,遵循构造函数的一般规则。转换构造函数只有一个参数,作用就是将其他数据类型转换成本类类型。但是有一个参数的构造函数不一定是转换构造函数,它可以是普通的构造函数,仅仅起到对象初始化的作用。
  2. 转换构造函数不仅可以将标准类型转换成它所在类的类型,还可以将其他类类型转换成本类型(这里没有涉及)。
class AB{
int x;
char y;
public:
AB(int a):x(a){//这个是构造函数,不是转换构造函数,因为转换构造函数没有成员初始化列表
y='y';
}
AB(int n){ //这个是转换构造函数
x=n;
y='y';
}
}
AB tmp=2;//这里就会调用转换构造函数

C++类型转换(类型转换函数+类型构造函数)的更多相关文章

  1. C# 字符串string类型转换成DateTime类型 或者 string转换成DateTime?(字符串转换成可空日期类型)

    在c#中,string类型转换成DateTime类型是经常用到的,作为基本的知识,这里在此做个小结.一般来说可以使用多种方法进行转换,最常用的就是使用Convert.ToDateTime(string ...

  2. JavaScript -- 时光流逝(一):数据类型,变量,类型转换,函数

    JavaScript -- 知识点回顾篇(一):数据类型,变量,类型转换,函数 1. 数据类型 Boolean:值类型,布尔(逻辑)只能有两个值:true 或 false. Number:值类型,Ja ...

  3. C++类型转换 -- 由其他类型转换到自定义类型

    由其他类型转换到自定义类型 由其他类型(如int,double)向自定义类的转换是由构造函数来实现,只有当类的定义和实现中提供了合适的构造函数,转换才能通过. /******************* ...

  4. 类型转换_float()函数

    float()函数不能将文字类的字符串类型转换成小数类型 同时将整数转换成浮点数类型的时候会在整数后买你加上.0 print(float(1))//output:1.0 print(float('1' ...

  5. Object类型转换成自定义类型(向下转型)

    Object类型转换成自定义类型 场景: 从数据库或者别的途径接收对象的时候用Object,但是用的时候怎么object点(方法提示 | alt+'/'),都点不出自定义类型的方法. 比如,数据库查询 ...

  6. sqlserver搜索中怎么把varchar类型转换成numeric类型

    sqlserver搜索中怎么把varchar类型转换成numeric类型 可以用cast来转换 如:列名叫grade,表名为A select cast(grade as numeric(y,x)) f ...

  7. Java byte类型转换成int类型时需要 & 0XFF的原因

    Java byte类型转换成int类型时需要 & 0XFF的原因 假设有byte b  = -1; 那么b的二进制是:1111 1111. 如果将b直接转换为int类型,那么二进制是 1111 ...

  8. oracle Clob类型转换成String类型

    转载:https://www.cnblogs.com/itmyhome/p/4131339.html Clob类型转换成String类型 oracle中表结构如下: create table GRID ...

  9. 基本类型转换成NSNumber类型

    int i=100; float f=2.34; NSNumber *n1=[NSNumber numberWithInt:i]; NSNumber *n2=[NSNumber numberWithF ...

随机推荐

  1. 简单快捷的方式从vps下载文件

    安装setuptools 1) 最简单安装,假定在ubuntu下 sudo apt-get install python-setuptools SimpleHTTPServer 是单线程的临时服务,建 ...

  2. 一键生成koa/koa2项目

    1. npm install -g koa-generator 安装生成器 2.执行 koa mytest (koa1项目) koa2 koa2test (koa2项目) 3.进入目录 cd koa2 ...

  3. Vue_(组件)实例属性

    Vue实例属性与方法中文文档 传送门   Vue实例属性:vue实例直接调用的属性 Learn 一.vm.$data:获取属性 二.vm.$el:获取实例挂载的元素 三.vm.$options:获取自 ...

  4. React Redux 与胖虎

    这是一篇详尽的 React Redux 扫盲文. 对 React Redux 已经比较熟悉的同学可以直接看 <React Redux 与胖虎他妈>. 是什么 React Redux 是 R ...

  5. 3 Java 冒泡排序法

    冒泡排序( Bubble Sort)是一种简单的排序算法.它重复访问要数列, 一次比较两个元素,如果他们的顺序错误就把交换过来.访问数列工作是 一次比较两个元素,如果他们的顺序错误就把交换过来.访问数 ...

  6. RzPageControl(pagecontrol)实现多标签的动态添加,切换,关闭

    https://blog.csdn.net/pdw2009/article/details/76157651 使用RzPageControl来实现多标签页使用菜单来打开标签页,通过标签页的captio ...

  7. Movidius的深度学习入门

    1.Ubuntu虚拟机上安装NC SDK cd /home/shine/Downloads/ mkdir NC_SDK git clone https://github.com/movidius/nc ...

  8. 理解MQ

    1.定义 2.消息队列比较 参考文章:https://www.jianshu.com/p/068b8d1610ee

  9. [sh]shell语法小结

    参考 基础语法 数字比较 -lt -eq -gt [ `ps -ef|grep nginx|grep -v grep|wc -l` -eq 0 ] str比较 == != [ $USER == &qu ...

  10. leetcode 100. Same Tree、101. Symmetric Tree

    100. Same Tree class Solution { public: bool isSameTree(TreeNode* p, TreeNode* q) { if(p == NULL &am ...