C++ operator _operator casting
来源:互联网 发布:bt天堂软件下载 编辑:程序博客网 时间:2024/06/11 07:09
Nowadays, focus on the study of the C++ operator, puzzled sometimes. Write here to make sure the clearly understanding.
The demo code from the internet.
First, define a class named CArea, In this class, we declare a operator name "float", in order to tell to compiler this object can transfer to a float type.
e.g.
CArea a;
float b;
and our code may like this : b = a; // cool! transfer a CArea object to a float type.
class CArea{ float area;public: CArea() { area=0; } CArea(float a) { area=a; } void getArea() { cout<<area<<endl; } void setArea(float a) { area=a; } operator float() { return area; }};
and another class named CCircle. In this class, we declare another operator CArea in order to tell the compiler the CCircle object can be transfer to type CArea.
e.g.
CCricle a;
CArea b;
and our code may like this : b = a; // Transfer a CCircle object to a CArea type. Of course in the function we need to do the real converting
class CCircle{ float R;public: void getR() { cout<<R<<endl; } void setR(float r) { R=r; } operator CArea() { float area=3.1415926*R*R; return (CArea(area)); }};
ok, when two base classes are ready, we can do some test work like following:
int main(){ CCircle cir; CArea are; float a; cir.setR(5); cir.getR(); are.getArea(); are=cir; are.getArea(); a=are; cout<<a<<endl; char *tt; cin>>tt; return 0;}
More, we can define a var to do a direct transformation. and we can change the code as following:
int main(){ CCircle cir; CArea are; float a; cir.setR(5); cir.getR(); are.getArea(); //are=cir; CArea aa(cir); aa.getArea(); //a=are; float b(aa); cout<<b<<endl; char *tt; cin>>tt; return 0;}
Finally, I understand how it works. funny!
0 0
- C++ operator _operator casting
- Casting operator
- 类型转换操作符(casting operator)
- C++_Operator Overloading(运算符重载 | 计算有理数的加减乘除)
- C++--类型转换(Type Casting)
- Casting
- operator.c
- C++Operator
- C++—类型转换(Type Casting)
- C + + operator precedence list
- [C++]C++ Operator Precedence
- c语言 cast operator
- C++operator用法.
- C++operator<<函数
- C++operator重载问题
- [C++]operator--重载
- [C++]operator overlord
- c++---operator重载++,--
- MYSQL数据库迁移到ORACLE数据库
- leetcode刷题 开始篇
- Linux下实现U盘、SD卡自动挂载功能 .
- bat处理解决运行多个任务时的任务
- UVa 11524 InCircle 关于内切圆的计算
- C++ operator _operator casting
- Xcode的控制台调试命令
- HDU 3264——Open-air shopping malls
- 用两个栈实现一个队列
- [LeetCode]Evaluate Reverse Polish Notation
- 解决EXC_BAD_ACCESS错误的一种方法--NSZombieEnabled
- openstack中的延迟删除、软删除、删除保护
- 第五周作业 -- 有向图邻接表表示及反向图构造
- Linux 实现USB自动挂载