类与类间的数据类型转换方法有两种
一.通过类的构造函数进行类与类间的数据类型装换
二.使用转换函数进行数据类型的装换。X::operator T(){return T;}
将X类型的对象装换为T类型的对象,装换函数没有参数,没有返回类型,但是必须用return 返回T类型对象,且该函数只能成为成员函数,不能为友元。
#include<iostream>
class complex
{
public:
explicit complex(int num)//避免隐式转换
{
x = y = num;
}
operator int() //不支持友元函数,只支持成员函数。
{
return x + y;
}
void print()
{
std::cout << x << '+' << y << 'i' << std::endl;
}
private:
int x;
int y;
};
void main1()
{
complex complex1(10);
complex1.print();
int num = complex1;
std::cin.get();
}
//类与类间的数据类型转换
class mianji
{
public:
friend class zuobiao;
mianji()
{
this->cx = 0;
this->cy = 0;
}
//~mianji();
private:
int cx;
int cy;
};
class zuobiao
{
public:
//friend class mianji;//定义友元类,允许友元访问私有变量
friend std::ostream &operator <<(std::ostream &out, zuobiao &zuobiao1)
{
out << zuobiao1.x;
out << zuobiao1.y;
return out;
}
zuobiao(mianji mianji1)
{
this->x = mianji1.cx;
this->y = mianji1.cy;
}
//~zuobiao();
operator mianji()
{
mianji mianji1;
this->x = mianji1.cx;
this->y = mianji1.cy;
return mianji1;
}
private:
int x;
int y;
};
int main()
{
mianji mianji1;
zuobiao zuobiao1 = static_cast<zuobiao>(mianji1);
zuobiao zuobiao2(mianji1);//使用构造函数进行类型转换
zuobiao2 = mianji1;//使用成员函数,转换函数进行类型初始化
std::cout << zuobiao1;
std::cout << zuobiao2;
std::cin.get();
}