++a --a 前缀自增自减运算法 ==》 前缀返回左值,返回a变化之后的值;
步骤:
- 成员变量自增或自减;
- 返回对象引用;
a++ a-- 后缀自增自减运算法 ==》 返回a变化之后的值;后缀时返回右值. 在这期间构造临时变量,将原始值拷贝到临时变量,进行操作
步骤
- 先要产生一个临时对象来保存未自增或自减前的对象;
- 接着成员变量自增或自减;
- 最后返回修改前的对象;
某大厂面试题
我们想实现一个计数器函数,请说一下下面代码的潜在问题
#include <iostream>
#include <set>
#include <vector>
using namespace std;
int counter()
{
static int cnt =0;
return cnt++;
}
int main()
{
std::cout<<counter()<<std::endl;
std::cout<<counter()<<std::endl;
return 0;
}