探討++i與i++哪個(gè)效率更高
答案:
在內(nèi)建數(shù)據(jù)類型的情況下,效率沒(méi)有區(qū)別;
在自定義數(shù)據(jù)類型的情況下,++i效率更高!
分析:
(自定義數(shù)據(jù)類型的情況下)
++i返回對(duì)象的引用;
i++總是要?jiǎng)?chuàng)建一個(gè)臨時(shí)對(duì)象,在退出函數(shù)時(shí)還要銷毀它,而且返回臨時(shí)對(duì)象的值時(shí)還會(huì)調(diào)用其拷貝構(gòu)造函數(shù)。
(重載這兩個(gè)運(yùn)算符如下)
#include <iostream>
using namespace std;
class MyInterger{
public:
long m_data;
public:
MyInterger(long data):m_data(data){}
MyInterger & operator++(){
cout<<"Integer::operator++() called!"<<endl;
m_data++;
return *this;
}
MyInterger operator++(int){
cout<<"Integer::operator++(int) called!"<<endl;
MyInterger tmp = *this;
m_data++;
return tmp;
}
};
int main()
{
MyInterger a = 1;
a++;
++a;
return 0;
}
相關(guān)文章
解析C++無(wú)鎖隊(duì)列的實(shí)現(xiàn)代碼
本篇文章是對(duì)C++無(wú)鎖隊(duì)列的實(shí)現(xiàn)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05詳解設(shè)計(jì)模式中的中介者模式在C++編程中的運(yùn)用
這篇文章主要介紹了設(shè)計(jì)模式中的中介者模式在C++編程中的運(yùn)用,中介者模式將對(duì)象間的通信封裝到一個(gè)類中,將多對(duì)多的通信轉(zhuǎn)化為一對(duì)多的通信,降低了系統(tǒng)的復(fù)雜性,需要的朋友可以參考下2016-03-03C語(yǔ)言中char*和char[]用法區(qū)別分析
這篇文章主要介紹了C語(yǔ)言中char*和char[]用法區(qū)別,包括使用過(guò)程中的誤區(qū)及注意點(diǎn)分析,需要的朋友可以參考下2014-09-09C語(yǔ)言實(shí)現(xiàn)紙牌計(jì)算24點(diǎn)小游戲
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)紙牌計(jì)算24點(diǎn)小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10Matlab制作視頻并轉(zhuǎn)換成gif動(dòng)態(tài)圖的兩種方法
這篇文章主要介紹了Matlab制作視頻并轉(zhuǎn)換成gif動(dòng)態(tài)圖的兩種方法,第一種方法使用movie(f)直接取生成AVI視頻文件,相對(duì)來(lái)說(shuō)比較簡(jiǎn)單,需要的朋友可以參考下2018-08-08C++實(shí)現(xiàn)藍(lán)橋杯競(jìng)賽題目---搭積木
這篇文章主要介紹了C++實(shí)現(xiàn)藍(lán)橋杯競(jìng)賽題目---搭積木,本篇文章通過(guò)題目分析列舉公式進(jìn)行分析算法,包含詳細(xì)的圖文,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07C++數(shù)據(jù)結(jié)構(gòu)之AVL樹(shù)的實(shí)現(xiàn)
AVL樹(shù)是高度平衡的而二叉樹(shù),它的特點(diǎn)是AVL樹(shù)中任何節(jié)點(diǎn)的兩個(gè)子樹(shù)的高度最大差別為1,本文主要給大家介紹了C++如何實(shí)現(xiàn)AVL樹(shù),需要的朋友可以參考下2022-06-06