c++运算符重载中的两种形式以及常引用的使用

下面是c++运算符重载的两种形式:

形式1:

Point operator + (const Point& A,const Point& B)
{
  return Point(A.x+B.x,A.y+B.y);
}

形式2:

ostream& operator << (ostream& out,const Point& p)
{
  out<<'('<<p.x<<','<<p.y<<')';
  return out;
}

1.形式1返回的是一个变量,常用的场合是两个数据运算后得到第三个数据,不改变原来两个数据。以加法为例:A+B->C

形式2返回的是一个引用,常用的场合是两个数据运算后把结果存入到其中一个数据中,需要改变原来某一个的值。以输出流运算为例:cout<<p->cout(新的)

2.由上面可知,形式2中我们希望改变cout的值,因此把形参声明为ostream型的引用。但是,为什么另外一个形参(包括形式1中的形参)为什么要申明为引用呢?

原来,通常形参采用引用传递,是由于类对象占用内存较大,引用传递时,无需在栈内存中开辟空间以装载临时对象,也省去了复制的耗时过程,为了避免改变形参的内容,还需配以const加以修饰。由于是引用,如果改变了形参,那个实参也会跟着改变。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值