C++重载操作符的问题

[复制链接]
查看11 | 回复2 | 2010-1-8 11:54:36 | 显示全部楼层 |阅读模式
重载时面向对象的思想,而结构体是C语言遗留下来的,用C++编程,完全可以用类来代替结构体。如果你学C++还经常用C语言的思想,你很难学好面向对象的思想。你说的问题,只需要重载“-”就可以了。示例代码如下:#include//为了方便,我就把类和主函数写在一起classObject//定义类{private://私有变量intx;public://公有voidSet(intvalue)//设置值{x=value;}intGet()//获取值{returnx;}Objectoperator-(Object&o)//重载-号{Objecto2;o2.x=this->x;//获取当前值o2.x=o2.x-o.x;//减法运算returno2;}};voidmain(){Objecta,b;a.Set(6);b.Set(20);cout<<"改变前:"<<endl;cout<<"a:x="<<a.Get()<<endl;cout<<"b:x="<<b.Get()<<endl;b=b-a;cout<<"改变后:"<<endl;cout<<"b:x="<<b.Get()<<endl;}
回复

使用道具 举报

千问 | 2010-1-8 11:54:36 | 显示全部楼层
形参前加&,不是传地址,而是传引用。传值:把变量a复制一份成b,把这个复制品b传进被调用函数里,而被调用函数对b的任何操作,并不会改变本来的变量a。传引用:直接把变量a传进被调用函数里,此时传的不是指针,被调用函数对a的操作将可能改变a的值。传地址:将变量a的地址,即指向变量a的指针,传进被调用函数里,被调用函数操作的是指向a的指针变量,也能改变变量a的值。
回复

使用道具 举报

千问 | 2010-1-8 11:54:36 | 显示全部楼层
引用是一个实体的别名,你说的是一个int同时他也是个int&,只是返回时不做值拷贝而已。正常的返回int是要做一次拷贝动作的,返回的是个临时变量。这就是引用最常用的地方。
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行