C++不同数据类型的转换
C++标准类型数据的转换
1.1隐式类型转换,如:
int i=6;
i=i+7.5;
1.2显式类型转换,如:
类型名(数据)
如int(89.5)
在C语言中
(int)89.5
建议用C++的方式。
C++用转换构造函数进行类型转换
1.1转换构造函数也是一种构造函数,它遵循构造函数的一般规则。通常把带有一个参数的构造函数称为转换构造函数。如:
Complex(double r){real=r;image=0;}
1.2使用转换构造函数把一个特定的数据转换成类的步骤如下:
A.先声明一个类。
B.在这个类中定义一个只有一个参数的转换构造函数,参数的类型是需要转换的类型,在函数体中实现转换的方法。
C.在类的作用域内可以实现如下形式的转换。
类名(指定类型的数据)
1.3不仅可以把一个标准类型转换成类对象还可以把一个类对象转换成一个类对象。(要求数据是public)
C++用类型转换函数进行类型转换
1.1与转换构造函数不同(把别的数据类型转换为类的对象),类型转换函数往往把类对象转换为其他类型。如:
operator double()
{return real;}
1.2类型转换函数的一般形式
operator 类型名()
{实现转换的语句}
在函数名的前面不能指定函数类型,函数没有参数。
1.3类型转换函数也称为类型转换运算符函数,由于它也是重载函数,故又称为类型转换运算符重载函数。
#include <iostream>
using namespace std;
class Complex
{
public:
Complex(){real=0;image=0;}
Complex(double r,double i):real(r),image(i){}
operator double();
private:
double image,real;
};
Complex::operator double()
{
return real;
}
int main()
{
Complex c1(1,2);
double c=0;
c=c1+1;
cout << c << endl;
return 0;
}1.4将运算符+函数重载为友元函数,在两个复数相加时,可以用交换律。所以往往将双目运算符函数重载为友元函数,单目运算符重载为成员函数。