如何用类实现不同数据类型之间的转换?
用成员函数结合静态数组的方式
#include <iostream>
#include <string>
using namespace std;
class Cstudent
{
private:
int age;
public:
Cstudent(int age)
{
this->age = age;
}
~Cstudent() {};
void ConvertType() // 类型转换函数
{
int Age[] = { 13,16,20 }, i = 0;
string name[] = { "zhangsan","lisi","wangwu" };
for (i = 0; i < sizeof(name) / sizeof(string); i++)
{
if (Age[i] == age)
{
cout << name[i] << endl;
break;
}
}
if (i >= sizeof(name) / sizeof(string))
{
cout << "您输入的姓名错误" << endl;
}
}
};
int main()
{
Cstudent stud(16);
stud.ConvertType();
}
向外界暴露的输入接口为“年龄”,向外界暴露的输出接口为“姓名”。
类型之间的显式转换(强制类型转换)与隐式转换(类型的自动转换)
使用“隐式转换”
#include <iostream>
#include <string>
using namespace std;
class Cstudent
{
private:
int mark;
public:
Cstudent(int mark) {
this->mark = mark;
}
~Cstudent() {};
void Show()
{
cout << "分数为" << this->mark << "分" << endl;
}
};
void ShowInf(Cstudent stud)
{
stud.Show();
}
int main()
{
ShowInf(99);
// 从整型变量隐式转换为Cstudent类型的变量
}
规定必须使用“显式转换”——关键字“explicit”
#include <iostream>
#include <string>
using namespace std;
class Cstudent
{
private:
int mark;
public:
explicit Cstudent(int mark) {
this->mark = mark;
}
~Cstudent() {};
void Show()
{
cout << "分数为" << this->mark << "分" << endl;
}
};
void ShowInf(Cstudent stud)
{
stud.Show();
}
// 因为只有一个成员变量,且有相应的构造函数才可以实现“两种变量类型之间的转换”,如果类中含有多个成员,那绝对是不可能成功的
int main()
{
Cstudent stud(99);
ShowInf(stud);
// 由于限定符explicit,只能从整型变量显式转换为Cstudent类型的变量
}