為什麼前置 比後置 的效率高

2021-07-04 03:04:25 字數 568 閱讀 4196

僅對類型別而言,請看**:

class a

a(const a &a)

~a()

a& operator++()//前置版本prefix

const a operator ++(int)//後置版本postfix

private:

int m_i;

};int _tmain(int argc, _tchar* argv)

輸出:

a的建構函式

a的拷貝建構函式

a的拷貝建構函式

a的析構函式

a的析構函式

a的析構函式

請按任意鍵繼續. . .

而:

int _tmain(int argc, _tchar* argv)

輸出:

a的建構函式

a的析構函式

請按任意鍵繼續. . .

前置是後置效率的三倍,且增加了一次呼叫棧和乙個入參。

前置 為什麼比後置 效率高

前置 type operator 後置 const type operator int 為了編譯器區分前置和後置 c 規定字尾形式有乙個int型別引數 當函式被呼叫時,編譯器傳遞乙個0做為int引數的值給該函式。不這樣規定,無法區分,因為都僅以自身物件為入參。下面是乙個簡單的例子 class cin...

前置 為什麼比後置 效率高

為了編譯器區分前置和後置 c 規定字尾形式有乙個int型別引數 當函式被呼叫時,編譯器傳遞乙個0做為int引數的值給該函式。不這樣規定,無法區分,因為都僅以自身物件為入參。下面是乙個簡單的例子 class cint cint cint operator 前置的是沒有引數的,並且返回引用 const ...

前置 為什麼比後置 效率高

前置 type operator 後置 const type operator int 為了編譯器區分前置和後置 c 規定字尾形式有乙個int型別引數 當函式被呼叫時,編譯器傳遞乙個0做為int引數的值給該函式。不這樣規定,無法區分,因為都僅以自身物件為入參。下面是乙個簡單的例子 class cin...