C遞增遞減運算子,求助關於遞增遞減運算子( , )過載的問題

2021-04-21 09:42:24 字數 1274 閱讀 4023

1樓:匿名使用者

對於int等整形來說,來大部分編譯自器都已經做bai過優化,++i和i++效率沒差du別;

而對於使用者自定義的

zhi型別,過載++、--運算dao符,(type)++或者(type)--會先返回該型別的臨時複製物件,如果使用者不需要用到這個功能,就造成了無形中的效率降低;而++(type)並不會進行復制臨時物件的步驟,所以說字首格式的效率更高

2樓:

首先你得了解它們的區別:

字首形式的遞增和遞減運算子在表示式中使用運算元的值之前回將其遞答增或遞減,因此在遞增或遞減當前物件之後,只需要返回該物件的引用即可。

而在字尾形式中,運算元是在表示式中使用其當前值之後遞增的。要實現這一點,需要在遞增當前物件之前建立當前物件的副本,並在修改過當前物件之後返回新建立的副本物件。

然後你的問題的重點在於:對於字尾的遞增遞減,需要在遞增當前物件之前建立當前物件的副本,並在修改過當前物件之後返回新建立的副本物件。所以效率就很慢。。。。

c++,字首遞增,和字尾遞增運算子都怎麼過載?

3樓:捐你妹

#include <iostream.h>class counter

counter operator ++();

counter operator ++(int );

void print()

private:

unsigned v;

};counter counter::operator ++()counter counter::operator ++(int)void main()

求助關於遞增遞減運算子(++,- -)過載的問題

4樓:匿名使用者

aclass a;

a++;呼叫第二種

++a;呼叫第一種

const 說明返回的是常量即無法修改值,或呼叫會修改值得方法

5樓:o檸墨小唄

++aclass 呼叫aclass& operator ++ ();aclass++ 呼叫const aclass operator ++ (int);

你的第二個問題回答了第一個問題。很久以前(八十年代),沒有辦法區分++和--操作專符的字首屬

與字尾呼叫,為了解決這個語言問題,c++規定字尾形式有一個int型別引數,當函式被呼叫時,編譯器傳遞一個0做為int引數的值給該函式。原const 修飾返回值是一個 const型別的aclass

用易語言寫的自動遞增遞減問題,易語言數字遞增遞減問題

版本 2 程式集 視窗程式集1.程式集變數 n,整數型.子程式 啟動視窗 建立完畢 時鐘1.時鐘週期 500 子程式 時鐘1 週期事件 n n 1 編輯框1.內容 到文字 n 如果真 n 50 時鐘1.時鐘週期 0 時鐘2.時鐘週期 500 如果真結束 子程式 時鐘2 週期事件 n n 1 編輯框1...

一道簡單的C語言題,關於C語言邏輯運算子一道簡單的題目!

就是5,編譯器親測 因為第一個 0就被認為結束了字串 自動忽略掉後續的字元了 應該是5個 strlen 從開始一直找到 0中止 到第一個 0就返回了 返回字串實際長度 strlen看到的字串只是 abcde 不可能是12,也不是6,是5。所以要選d。關於c語言邏輯運算子一道簡單的題目!這是邏輯運算子...

C語言中增1減1運算子,c語言關於自增自減運算子的一個問題

自增 和自減 操作符為物件加1或減1操作提供了方便簡短的實現方式。它們有前置和後置兩種使用形式。i 等同於 i i 1。和 既可寫在變數之前,稱為前置運算,如 a a 和 也可以寫在變數之後,稱為後置運算,如 a a 對單獨一個變數實行前置運算或後置運算,其結果是相同的,都是使該變數的值增加或減少1...