我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:2019跑狗图高清彩图 > 置类型 >

关于C++中 类与内置类型 类型转换 的问题

归档日期:07-05       文本归类:置类型      文章编辑:爱尚语录

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  这个应该是产生了二义性问题,当运行“r1+2”的时候不知道是要用operator+运算还是用类型转换运算,最好是不要定义类型转换我也觉得是二义性的问题。遇上理解的人了....但怎么解决呢,比如在实现函数另外的地方我又想实现double d=r;(r为类类型) 这样的功能? 我对类型转换不是很理解,在什么情况下会调用类型转换函数呢???可以将operator+操作符定义成成员函数,执行“+”的时候用r1.operator+(2)就不会报错了

  展开全部看看全部的代码吗?更多追问追答追问全部的代码太长了,放不下...

  就是一个有理数类,num表示分子,den表示分母追答r2(r1+2);追问这样显然不行啊....我试过了。就算换成rational(r1+2)也不行啊,没有这样的构造函数...追答重载+ 的函数 是类与类得相加 还是有没有定义与数的的相加追问如果没有那个类型转换的函数,类和内置类型相加的时候,会自动调用构造函数把内置类型转为类类型,这个不会有问题。

  但是我不明白operator double() const {return (double(num)den);这个函数在哪些情况下会执行,哪些情况下不执行....

  展开全部二义性,修改 operator + 为友元函数更多追问追答追问已经是友元了追答再加个友元吧

  应该是二义性的问题的追答你好好看看我的那个声明追问???求详细解释???

  这句是啥意思? 你是想重载 double 操作符? double是一个操作符吗? 能被重载?

  反正是你这个操作符重载的函数的基本格式就不对。 函数的返回值类型在哪? 参数列表在哪?更多追问追答追问详情请见各种C++教程,课本上自定义类型转换就是这样的....追答class A

  是这个意思?这个是操作符()的重载。 还是不太懂, 孤陋寡闻 没见过operator double() const这种用法。追问这个跟运算符的重载不一样的啦~追答贴到编辑器里试了一下, 好像是可以的,我弄错了。 一直没见过这种用法 呵呵, 研究一下追问这个问题你可能也会遇到,研究完后可以再看看这个问题呢,可能对你也有帮助。希望到时候就有大神已经帮忙解答清楚了....追答class TestClass

本文链接:http://kathala.net/zhileixing/350.html