C++类*类型和其他类型相互转换
类类型转换时会出现两种之间转换,下面我们说的是类类型
1.其他类型转换为本类类型
通过类带一个参数的构造函数;或者多个参数构造函数,除了第一个参数后面参数都有默认值时!这样在其他类型赋值给该类类型对象时会发生隐式转换。
#include <string>
#include <iostream>
using namespace std;
class Test
{
public:
int m_i = 10;
/*explicit*/ Test(int i):m_i(i) // explicit可以杜绝隐式转换
{
cout << "构造" << endl;
}
~Test()
{
cout << "析构" << endl;
}
};
int main()
{
Test t1 = 100; // 隐式转换
return 0;
}
explicit可以杜绝这种隐式转换,这样限制后就只能显式的转换了!
2.本类类型转换其他类型
通过类的《转换操作符》来完成,转换操作符是一种特殊的类成员函数,它可以将类类型转换为其他类型值的转换。如下:
operator type()
type:需要转换的其他类类型(void除外)
转换函数必须是成员函数,不能指定返回类型,并且形参表必须为空。
#include <string>
#include <iostream>
using namespace std;
class Test
{
public:
int m_i = 10;
explicit Test(int i):m_i(i) // explicit可以杜绝隐式转换
{
cout << "构造" << endl;
}
// 本类类型自动隐式转换int类型
operator int() const { return m_i;} // 本类类型转换其他类型
~Test()
{
cout << "析构" << endl;
}
};
int main()
{
//Test t1 = 100; // erro
Test t1(1000);
int s = t1; //t1转换为int
cout << s << endl;
return 0;
}
C++类*类型和其他类型相互转换的更多相关文章
- hibernate中java类的成员变量类型如何映射到SQL中的数据类型变化
hibernate映射文件??.hbm.xml配置映射元素详解--Hibernate映射类型 在从Hibernate的java的成员类型映射到SQL中的数据类型,其内映射方式它满足,SQL可以自己调制 ...
- 领域模型中的实体类分为四种类型:VO、DTO、DO、PO
http://kb.cnblogs.com/page/522348/ 由于不同的项目和开发人员有不同的命名习惯,这里我首先对上述的概念进行一个简单描述,名字只是个标识,我们重点关注其概念: 概念: V ...
- java利用反射获取类的属性及类型
java利用反射获取类的属性及类型. import java.lang.reflect.Field; import java.math.BigDecimal; import java.util.Map ...
- java类定义、变量类型、构造函数
1.java类class的定义 所有java程序都以类class为组织单元,java类由属性和方法组成,下面看例子: public class Phone{ //属性 String company ...
- TypeScript基础类型,类实例和函数类型声明
TypeScript(TS)是微软研发的编程语言,是JavaScript的超集,也就是在JavaScript的基础上添加了一些特性.其中之一就是类型声明. 一.基础类型 TS的基础类型有 Boolea ...
- 一个高性能的对象属性复制类,支持不同类型对象间复制,支持Nullable<T>类型属性
由于在实际应用中,需要对大量的对象属性进行复制,原来的方法是通过反射实现,在量大了以后,反射的性能问题就凸显出来了,必须用Emit来实现. 搜了一圈代码,没发现适合的,要么只能在相同类型对象间复制,要 ...
- javabean(实体类)转Map类型
javabean(实体类)转Map类型 从网上"風亦飞"的导出EXCEL的源代码提取出来的.认为非常好用.分享一下给大家,主要看beanToMap方法就OK了 /*以下是从poi导 ...
- 域模型中的实体类分为四种类型:VO、DTO、DO、PO
经常会接触到VO,DO,DTO的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度,对这几个概念进行简析. 得出的主要结论是:在项目应用中,VO对应于页面上需要显示的数据(表单),DO对应 ...
- 3、二、c# 面向对像编程。类,结构、C# 数据类型(引用类型、值 类型、指针类型)、ref参数与out参数、方法的重载、静态类型与静态成员、继承与多态、委托与事件
一.类 定义类使用class关键字. <access specifier> class class_name { // member variables 成员变量 <access s ...
随机推荐
- javascript之instanceof
定义和用法 instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上. 语法: object instanceof construct ...
- ExcelReport.cs Excel操作类、实例源码下载
标题一.告别ASP.NET操作EXCEL的烦恼标题二.ASP.NET操作EXCEL 合并单元格 大全... cnblogs/hanzhaoxin/韩兆新的博客园ExcelReport第一篇:使用Exc ...
- CSS ,flex: 1的用处
flex: 1:的妙用 首先 flex 是 flex-grow.flex-shrink.flex-basis的缩写. 当 flex 取值为一个非负数字,则该数字为 flex-grow 值,flex- ...
- java 里执行javascript代码
import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; ScriptEngineManager sem = ...
- 解决JAVA连接Sybase数据库查询数据乱码的问题
连接字符串加上charset=eucgb&jconnect_version=0例如:jdbc:sybase:Tds:server:port/database?charset=eucgb& ...
- STM8 工程模版
在st官网下载STM8固件库 拷贝固件库到工程目录下 再创建两个目录 user:存放用户文件.自己编写的源文件 project:存放工程文件 拷贝stm8s_conf.h到user目录下 AIR 创建 ...
- linux-修改树莓派分辨率
直接在树莓派下编辑 使用命令行来编辑配置文件 sudo nano /boot/config.txt 并在config.txt文件的最后加上以下代码即可 max_usb_current=1 hdmi_g ...
- Python标准库3.4.3-random
9.6. random — Generate pseudo-random numbers Source code: Lib/random.py 翻译:Z.F. This module impleme ...
- 中文论文-LaTex模板
\documentclass[10pt,UTF8]{article} \usepackage{ctex} \usepackage{amssymb,amsmath,multicol,titlesec} ...
- Java泛型全解析【接口、类、封装类型】
目录 1.导读 2.为何需要泛型? 3.泛型的定义格式 3.泛型的好处 4.什么时候使用泛型? 5.泛型的擦除 6.泛型的补偿 7.泛型的应用 7.1[泛型类] ...