C++ 转换函数 与 4种cast

来源:互联网 发布:用友网络2017最新消息 编辑:程序博客网 时间:2024/04/30 15:39

C++ 转换函数 与 4种cast


转换函数:

C++中挺有意思的一个特性

格式:

operator 转换类型名称()

注意:

(1)返回值固定为重载数据类型

(2)本身不存在返回声明



“转换函数只能是成员函数,无返回值,空参数。
不能定义到void的转换,也不允许转换成数组或者函数类型。
转换常定义为const形式,原因是它并不改变数据成员的值。”

引用自http://blog.csdn.net/xscarlet/article/details/1563656



Talk is cheap!


#include <iostream>using namespace std;class Example{private:double num;public:Example() {num = 0.0;}Example(double s) {num = s;}void show(){cout << num << endl;}operator double () const;operator int () const;};Example::operator double () const{return num + 1.2;}Example::operator int () const{return int(num) + 10;}int main(){Example tt(3.3);cout << double (tt) << endl;cout << int (tt) << endl;return 0;}

转换函数存在的问题:

(1)有的情况下会引起二义性的问题,虽然看起来确实很灵活

(2)与隐式的转换函数产生冲突


4种cast

http://blog.csdn.net/pushfang/article/details/27368715

0 0