1、分类:(1)一般数据类型到类类型的转换;(2)类类型到一般数据类型的转换。
2、类型的隐式转换:
(1)在执行算术运算时,低精度数据自动向高精度转换;
(2)赋值运算时,右值自动转换为左值得类型;
(3)函数调用时看,实参类型自动转换为形参类型;
(4)函数有返回值时,返回值类型自动转换为函数的类型。
3、一般数据类型转换为类类型
(1)方法:采用单个参数的构造函数实现。
(2)例子:验证类型转换
/***********************************
时间:2016年10月2日09:15:56
功能:验证一般数据类型到类类型的转换
************************************/
#include <iostream>
using namespace std;
class Data
{
public:
Data(); //无参构造函数
Data(int a); //单参构造函数
void print();
private:
int d;
};
Data::Data()
{
cout<<"in non-parm con func"<<endl;
d = 0;
}
Data::Data(int a)
{
d = a;
cout<<"in parm con func"<<endl;
}
void Data::print()
{
cout<<d<<endl;
}
void main()
{
Data d;
d = 100; //用一般数据类型给类的对象进行初始化,到时必会发生类型的转换
d.print();
}
4、类类型到一般数据类型的转换
(1)方法:必须通过转换函数来实现。
(2)转换函数的格式:
operate <数据类型说明符>()
{
///函数体
}
注:这个函数不需要参数也不需要函数返回值类型。
5、例子:实现类类型到一般数据类型的转换。
/***************************************
时间:2016年10月2日09:54:14
功能:实现类类型到一般数据类型的转换
****************************************/
#include <iostream>
using namespace std;
class Data
{
public:
Data(int a); //构造函数
operator double(); //类型转换函数
private:
int da;
};
Data::Data(int a)
{
da = a;
}
Data::operator double()
{
return da*1.2;
}
void main()
{
Data d(1); //定义一个Data的类
double a = 0.0;
a = d + 1.25;
cout<<a<<endl;
}