++i和i++的区别

来源:互联网 发布:通联数据网站 编辑:程序博客网 时间:2024/05/23 05:08

大家都应该知道i++和++i的区别,前者是先使用i的值,然后再增加1,而后者是先增加1然后再使用i的值。

但是i++和++i那个更好呢? 我们实现角度来看:前者是将i值加1后赋给i,然后返回i本身;而后者是先用个临时变量存储i值,然后将i值加1赋给i,然后返回临时变量的值。

内置数据类型他们的效率差不多,看他们的汇编代码就知道,我看的汇编代码是VC的,其他编译器不知道,还是得要看编译器优化把。
而对于对象的++i和i++的效率,那明显就是++i 要快,从实现角度我们看就是++i快,然后我们从实际代码出发:

#include<iostream>using namespace std;class I{public:I();~I();I(const I &i);I& operator=(const I &i);I& operator++();I operator++(int);private:int m_i;};I::I():m_i(0){cout << "con" << endl;}I::~I(){cout << "dector" << endl;}I::I(const I& iObj):m_i(iObj.m_i){cout << "copy" << endl;}I& I::operator++(){cout << "increament" << endl;++m_i;return *this;}I& I::operator=(const I &iobj){cout << "assign" << endl;    m_i=obj.m_i;return *this;}I I::operator++(int){I old = *this;++(*this);return old;}int main(void){I i;cout << "++i" << endl;++i;cout << endl;cout << "i++" << endl;i++;cout << endl;return 0;}

结果是:

0 0
原创粉丝点击