c++ 转换与类类型简单实例
2014-11-01 10:42
176 查看
在需要做数据类型转换时,一般显式的写法是:
[cpp] view
plaincopy
<span style="font-size:18px;">type1 i;
type2 d;
i = (type1)d; //显式的写类型转,把d从type2类型转为type1类型</span>
这种写法不能做到无缝转换,也就是直接写 i = d,而不需要显式的写(type1)来向编译器表明类型转换,要做到这点就需要介绍一下“类型转换操作符”,拿最简单的基本类型封包解包来举例:
[cpp] view
plaincopy
class Integer
{
public:
Integer(int v);
Integer& opetaror =(const int &v); //重载赋值操作符,可以做到 Integer i = 10;//把i当基本数据类型使用
operator int(); //重载类型转换操作符,可以做到int i; Integer it; i = it; //it直接转为int类型,然后赋值给i
private:
int data;
};
Integer::Integer(int v)
{
data = v;
}
/*!
*@brief 重载赋值操作符,可以做到 Integer i = 10;//把i当基本数据类型使用
*/
Integer& Integer::opetaror =(const int &v)
{
data = v;
return *this;
}
/*!
*@brief 重载类型转换操作符,可以做到int i; Integer it; i = it; //it直接转为int类型,然后赋值给i
*/
Integer::operator int()
{
return data;
}
#include <iostream>
using namespace std;
int main()
{
Integer integer1(10); //调用构造函数进行初始化
Integer integer2;
int i1 = 10;
integer2 = i1; //调用=赋值操作符进行赋值
//下面测试类型转换操作符的应用
int i2;
i2 = integer1; //integer1是Integer类型,这里直接把Integer类型转换为int,然后赋值给i2
//如果没有重载了int(),需要类型转换的话,这里必须写成 i2 = (int)integer1;
return 0;
}
这是int类型转换的写法,相应的,long,float,double等等的类型转换方法一样,统一的说,可以抽象的写成
operator type();只要type是一个类型,包括基本数据类型,自己写的类或者结构体都可以转换。
[cpp] view
plaincopy
<span style="font-size:18px;">type1 i;
type2 d;
i = (type1)d; //显式的写类型转,把d从type2类型转为type1类型</span>
这种写法不能做到无缝转换,也就是直接写 i = d,而不需要显式的写(type1)来向编译器表明类型转换,要做到这点就需要介绍一下“类型转换操作符”,拿最简单的基本类型封包解包来举例:
[cpp] view
plaincopy
class Integer
{
public:
Integer(int v);
Integer& opetaror =(const int &v); //重载赋值操作符,可以做到 Integer i = 10;//把i当基本数据类型使用
operator int(); //重载类型转换操作符,可以做到int i; Integer it; i = it; //it直接转为int类型,然后赋值给i
private:
int data;
};
Integer::Integer(int v)
{
data = v;
}
/*!
*@brief 重载赋值操作符,可以做到 Integer i = 10;//把i当基本数据类型使用
*/
Integer& Integer::opetaror =(const int &v)
{
data = v;
return *this;
}
/*!
*@brief 重载类型转换操作符,可以做到int i; Integer it; i = it; //it直接转为int类型,然后赋值给i
*/
Integer::operator int()
{
return data;
}
#include <iostream>
using namespace std;
int main()
{
Integer integer1(10); //调用构造函数进行初始化
Integer integer2;
int i1 = 10;
integer2 = i1; //调用=赋值操作符进行赋值
//下面测试类型转换操作符的应用
int i2;
i2 = integer1; //integer1是Integer类型,这里直接把Integer类型转换为int,然后赋值给i2
//如果没有重载了int(),需要类型转换的话,这里必须写成 i2 = (int)integer1;
return 0;
}
这是int类型转换的写法,相应的,long,float,double等等的类型转换方法一样,统一的说,可以抽象的写成
operator type();只要type是一个类型,包括基本数据类型,自己写的类或者结构体都可以转换。
相关文章推荐
- C++学习笔记十七 - 简单的类型强制转换
- C++利用stringstream进行数据类型转换实例
- C/C++ ip地址与int类型的转换实例详解
- ADA程序实例(类型、控制流、转换、简单数学运算等)
- C++类型转换运算符的实例详解
- Java JNI 编程进阶 实例+c++数据类型与jni数据类型转换
- ADA程序实例(类型、控制流、转换、简单数学运算等)
- 标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast(转载)
- 利用C++的stringstream对各种数据类型转换
- C++中数据类型的转换
- 标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast(转载)
- javascript入门·简单运算和数据类型转换
- C++中的类型转换与类型识别 1
- 实例解析C++/CLI之值类型
- 简单的stringstream实例--实现字符串与数字之间相互转换
- 利用C++的stringstream对各种数据类型转换
- Python 与 C++ 程序的简单实例对比
- C++中类型转换(转载)
- 亦谈c++中的类型转换
- 用标准C++进行string与各种内置类型数据之间的转换