/* 运算符重载之强制转换.cpp */ /* 有一个类Circle,设计该类的类型转换函数,当将Circle对象转换成int型时,返回圆的半径;当将它转换成double型时,就返回圆的周长;当将它转换成float型时,就返回圆的面积。 */ /* 类型转换函数没有参数。 类型转换函数没有返回类型。 类型转换函数必须返回将要转换成的type类型数据。 */ #include using namespace std; class Circle { private: double x, y, r; public: Circle(double x1, double y1, double r1) { x = x1; y = y1; r = r1; } operator int() { return int(r); } operator double() { return 2 * 3.14 * r; } operator float() { return (float)3.14 * r * r; } }; int main() { Circle c(2.3, 3.4, 2.5); int r = c; //调用operator int(),将Circle类型转换成int double length = c; //调用operator double(),转换成double float area = c; //调用operator float(),将Circle类型转换成float double len = (double)c; //将Cirlce类型对象强制转换成double cout << r << endl; cout << length << endl; cout << len << endl; cout << area << endl; }