C++中允许将一个类型转换为另一个类型
例如:
int a = (int)1.23;//将double 转换成 int
小括号:类型操作符,括号里的是要转换的目标类型
一般形式:
class Object{
public:
operator Type()//Type是目标类型
{
Type result;
return result;
}
};
类型一:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
class Fraction{
public:
Fraction():num(1),den(1)
{
}
Fraction(int n,int d):num(n),den(d)
{
}
operator double()
{
return (double)num/den;
}
public:
int num;//分子
int den;//分母
};
int main()
{
Fraction fa(4,5);
double value = (double)fa;
printf("%f\n ",value);
return 0;
}
类型二:
为Text类型重载一个类型转换操作符,使其可以被转化为const char*型字符串
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
class Text{
public:
Text(const char* str)
{
m_size = strlen(str)+1;
m_buf = new char[m_size];
strcpy(m_buf,str);
}
~Text()
{
delete [] m_buf;
}
operator const char*()
{
return m_buf;
}
public:
int m_size;
char* m_buf;
};
int main()
{
Text t1("helloworld");
const char* txt = (const char*)t1;
printf("text:%s\n",txt);
return 0;
}