ڼС
梦回起点
做你害怕做的事,你会发现:不过如此
本站基于WordPress—主题by 设计窝
冀ICP备15003737号
梦回起点
Copyright © 2015-2018 All rights reserved.

C++中Opeartor++()

先是下面的代码:

TestClass operator ++(int)这个比较简单,没有什么好说的。大致就是这个样子吧。

来看看TestClass operator ++()这个函数:

上面的代码很简单,直接让两个重载的运算符返回一个临时对象,好像没问题,大多数情况下也能正常工作。

什么情况下不会正常工作呢?试一下内置的++运算符会发现

int a = 0;++++a;

这样是可以的相当于对a进行了两次++,返回2。

而我们的不是,因为第一次++过后返回一个临时对象,我们对一个临时对象进行了++。

那我们就改进一下返回引用吧,看下下面的代码:

这个代码有问题吗?首先看到的问题是,为了不想让外界修改内部成员变量最直接的结果就是造成++++这种形式不能用了。

那如果把const去掉呢,变成下面的形式:

还存在问题吗?好像可以用了,但是我们试一下发现编译都通不过了:
无法从“int”转换为“TestClass &”

问题在于我们应该返回一个引用,但不是成员变量的引用,而是这个对象:

终于可以了,++++形式可以用了,而且可以正常工作。

2017-12-07
关键字: ,
  1. 世爵娱乐

    高端的,玩C的都是大神!

发表评论