请问在C++中对于那些运算符的重载,是怎么回事

来源:百度知道 编辑:UC知道 时间:2024/06/06 12:08:26
我现在的疑问就是friend a(我定义的类) operator +(const a &p,const b &q)
这个句子是错误的,但把里面的b类改成a就可以了,为什么这两个 类不能是一样的,如果规定要一样的话,那这些运算符岂不是重载后只是局限于同类之间的运算,异类之间是不能运算的,高手知道的话请告诉我,若要实现异类之间的运算,运算符要怎么重载
就是因为在网上我找不到,所以大家帮帮忙

你这个问题是计算机常识问题,不同类代表着不同的内存存储方式,不同的内存空间占用大小(这个是主要的),你如果两个不同的类相加了以后必然存在赋值问题,你不可能光加不赋值,比如c= a+b;那么c是a类型还是b类型呢?c在内存中如何分配空间存储呢?重载无法异类重载,但是在某些虽然类名不同,但实际的类结构和大小相同的类是可以通过强制类型转换来进行运算的。如:c=a+(A)b;//将b强制转换成A类型与a对象匹配然后赋值给c(当然,c也必须是A类的对象)

如果想要这样的话,就还要定义类型转换函数,不同类之间的运算其实是先调用了类型转换函数了的,如果你没有定义,当然是不能运算的啦

不同类之间的运算符也是可以重载的啊,但是要有相似的特点啊,
像string类型的和char类型的不就可以吗?具体怎么实现网上应该会有很多例子啊,多查查,最好自己能亲自动手哦~ ~ ~ ~

你有源代码吗 交流请HI我

不要把它想得很神秘,其实就是和你用的+ - × /是一样的,只不过,常用的运算别人都给你写好了,自己定义的类之间的运算就需要你自己来写了