隐式数据类型转换,由系统自动完成,除此之外,它还提供显式数据类型转换
形式为
类型名(数据)
回顾下构造函数
1 默认构造函数
Complex();//没有参数
2 Complex(double r,double i);//初始化的构造函数
3 复制对象的复制构造函数
Complex(Complex&c);//形参是本类对象的引用
用转换构造函数进行不同数据类型的转换
转换构造函数
eg Complex(double r)
{
real=r;imag=0}//只有一个形参,只能有一个!!!!
假如定义了上述转换构造函数,出现
(1)Complex c1 (3.5);//只有一个参数,调用转换构造函数,实部为3.5,虚部为0;
(2)也可以建立一个无名的对象
Complex(3.6);//合法,但无法使用它
c1=Complex(3.6);//进行赋值,假设c1已经定义为该类的对象(可以在一个表达式中使用无名对象)
若重载“+”可以使得两个对象相加
c2=c1+2.3;是错误的因为没有进行类型转换的同时也没有重载相应得运算
若是改成
c2=c1+Complex(2,5);就是合法的
归纳:
(1)先声明一个类
(2)l类中定义一个只有一个参数的构造函数,参数的类型是需要转化的类型,函数体中指定转化方法
(3)类名 (指定类型的数据)
注:不仅可以将一个标准类型转换成类的对象,还可以将一个类对象转化成另一个类的对象
eg
Teacher(Student&s){
num=s.num;
strcpy(name,s.name);}
类型转换函数
将一个类的对象转换成另一类型的数据
形式
operator 类型名()
{实现转换的操作}
注:
(1)没有函数类型,没有参数
(2)只能作为成员函数