1 Star 2 Fork 0

岑剑伟 / CPlusPlusThings

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
operator_cast.cpp 1.14 KB
一键复制 编辑 原始数据 按行查看 历史
/* 运算符重载之强制转换.cpp */
/*
有一个类Circle,设计该类的类型转换函数,当将Circle对象转换成int型时,返回圆的半径;当将它转换成double型时,就返回圆的周长;当将它转换成float型时,就返回圆的面积。
*/
/*
类型转换函数没有参数。
类型转换函数没有返回类型。
类型转换函数必须返回将要转换成的type类型数据。
*/
#include <iostream>
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;
}
C++
1
https://gitee.com/genvex/CPlusPlusThings.git
git@gitee.com:genvex/CPlusPlusThings.git
genvex
CPlusPlusThings
CPlusPlusThings
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891