大家都應該知道i++和++i的區別,前者是先使用i的值,然後再增加1,而後者是先增加1然後再使用i的值。
但是i++和++i那個更好呢? 我們通過程序來比較一下:
[cpp]
#include<iostream>
using namespace std;
class I{
public:
I();
~I();
I(const I &i);
I& operator=(const I &i);
I& operator++();
I operator++(int);
};
I::I()
{
cout << "con" << endl;
}
I::~I()
{
cout << "dector" << endl;
}
I::I(const I& i)
{
cout << "copy" << endl;
}
I& I::operator++()
{
cout << "increament" << endl;
return *this;
}
I& I::operator=(const I &i)
{
cout << "assign" << endl;
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;
}
結果是:
從執行結果可以看出,++i就調用了一次構造函數,一次++操作,
而i++ 調用了兩次復制構造函數,兩次析構函數,一次++操作符。
通過上述的比較,大家可以看出是那個效率更好了吧!