对于迭代器和其他模板对象使用前缀形式 (++i) 的自增, 自减运算符,理由是 前置自增 (++i) 通常要比后置自增 (i++) 效率更高。
++a表示取a的地址,增加它的内容,然后把值放在寄存器中;
a++表示取a的地址,把它的值装入寄存器,然后增加内存中的a的值;
前缀与后缀运算符重载
1 | class Age |
a++的类型是const Age,返回的是右值,自然不能对它进行前置++、后置++、赋值等操作。同时会产生临时对象。
++a的类型是Age&,返回的是左值,当然可以对它进行前置++、后置++、赋值等操作
所以,在非内置类型的时候,尽量使用前置++,因为效率高(后置自增,效率低)