我已经修改了两个用户定义的类,使得构造函数接受另一个类的对象作为它的参数。
这是否涵盖了所有基础,还是我必须重载赋值运算符和类型转换运算符以处理所有隐式和显式类型转换情况?
例如:
#include <iostream>
using namespace std;
class Celsius; // Forward Declaration
class Fahrenheit {
double temp;
public:
Fahrenheit(double d = 0.0) : temp(d) {}
Fahrenheit(Celsius);
void setTemp(double d) { temp = d; }
double getTemp() { return temp; }
void print() { cout << "\nThe temperature value in Fahrenheit is " << temp << endl; }
};
class Celsius {
double temp;
public:
Celsius(double d = 0.0) : temp(d) {}
Celsius(Fahrenheit f) { temp = ((f.getTemp()-32) * 5) / 9; }
void setTemp(double d) { temp = d; }
double getTemp() { return temp; }
void print() { cout << "\nThe temperature value in Celsius is " << temp << endl; }
};
Fahrenheit::Fahrenheit(Celsius c) { temp = ((c.getTemp() * 9) / 5) + 32; }
int main() {
Fahrenheit t1(20);
Celsius t2(t1);
Fahrenheit t3(50);
t2.print();
t2 = (Celsius) t3;
t2.print();
cin.get();
return 0;
}