鱼C论坛

 找回密码
 立即注册
查看: 2561|回复: 5

关于c++ =赋值操作符重载

[复制链接]
发表于 2014-3-25 11:45:16 | 显示全部楼层 |阅读模式
50鱼币
大家好,,小弟c++ 初学者最近跟着甲鱼老师的课程看到操作符重载这里来了
但是小弟太笨一直没看懂 操作符是如何重载的,,想请教一下各位如何实现操作符重载呢
我不知道操作符 如何重载,比如说 return回来的数据类型是啥 还有它的参数是那些意思
int数据=对象;
对象 = int数据;
这样的重载方式

大打个比方我用
int a;class Aclass{   public: int b;};


[color=rgb(81, 112, 58) !important]复制代码

然后
Aclass aclass;类型的对象a = aclass;//我想重载这一行,


[color=rgb(81, 112, 58) !important]复制代码

将对象aclass通过一个函数 将下缅甸额成员b赋值给 a
这是a = 对象的赋值
如果是对象 = a怎样赋值呢???
c++对操作符重载有没有神马条条款款啊????
为啥有int的自加表示后缀
没有int的自加表示前缀呢?

非常非常感谢各位 学到这个重载操作符我实在晕了 希望大家帮帮忙看看 非常感谢!



最佳答案

查看完整内容

你的Test operator = ( int& );是重载的赋值运算符,但是Test test = 2;是用的副本构造器 你把Test operator = ( int& );改成Test(int&)就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-25 11:45:17 | 显示全部楼层

你的Test operator = ( int& );是重载的赋值运算符,但是Test test = 2;是用的副本构造器
你把Test operator = ( int& );改成Test(int&)就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-25 21:42:56 | 显示全部楼层
重载就是。。。。我们比如说 > (大于号)这个符号。。
他表示 3 > 2 =============3 大于 2
现在我们重载 大于号 2i+3 > 3i+3 ===两边都是复数哈
重载函数为 return (2i+3) - (3i+3)
相当于告诉程序。。。现在 > 可以表示复数-复数
ps: 反正就是那个意思。。。你完全没必要话费50鱼币。。好么。。
百度一堆。。好么? 。。。。。CSDN blog各种解释。。好么。。?
自己查嘛。。。
再ps: 你的帖子有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-3-27 11:32:07 | 显示全部楼层
本帖最后由 洗脚水煮饺子 于 2014-3-27 11:39 编辑
向往青莲 发表于 2014-3-25 21:42
重载就是。。。。我们比如说 > (大于号)这个符号。。
他表示 3 > 2 =============3 大于 2
现在我们重载 ...

非常感谢你的回答,小弟我做单片机的 最近想学c++ 在stm32上用c++编程
想用 强大的c++语言 模拟出 最入门的51单片机环境,将部分重要的寄存器进行对象化;
例如
我现在发现 我想仿string 类做一个对象

string a = "hello;"
这一段很显然 string a是将 string类进行实例化了, a成为对象 并且通过重载的赋值符号 将hello保存起来了

可是小弟我现在是这样的 编译器老报错 说是sbit 无法和int转换class Test{
public :
int a;
Test operator = ( int& );
}
Test Test::operator  = ( const int& b )
{
    this->a = b;
return *this;
}

main()
{
Test test = 2;
//这里报错
}


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-27 13:05:21 | 显示全部楼层
洗脚水煮饺子 发表于 2014-3-27 11:32
非常感谢你的回答,小弟我做单片机的 最近想学c++ 在stm32上用c++编程
想用 强大的c++语言 模拟出 最入门 ...

我从没用过。。。。操作符重载。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-27 20:23:23 | 显示全部楼层
洗脚水煮饺子 发表于 2014-3-27 11:32
非常感谢你的回答,小弟我做单片机的 最近想学c++ 在stm32上用c++编程
想用 强大的c++语言 模拟出 最入门 ...

单片机用C就足够了。sbit是keil的扩展C语法,不属于变准C语言的一部分。比如,在C语言里,你定义一个整数
int a;
a的内存地址是随机分配的。但51单片机中,重要的是寄存器的读写,所以同样分配个变量a,我们希望它表示某个寄存器,这样a的地址就不能够随机分配。传统C语言无法直接解决这个问题(当然,也可以用指针渐接解决),所以引入了sbit.

C++相比于C的优势在于能够方便地编写大型程序和需求常常需要变动的大型程序。51单片机和stm32程序规模都很小,不需要用到这些特性。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 12:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表