字首 字尾 運算子過載

2022-08-20 01:30:12 字數 904 閱讀 8258

舉報

分類:c常用備查(24)

c++(43)

下面例子程式中   const fraction operator ++(int)   中   

int不過是個啞元(dummy),是永遠用不上的   

它只是用來判斷++是prefix   還是   postfix   

記住,如果有啞元,則是postfix,否則,就是prefix   

就像其他的一元演算法和邏輯運算一樣   

而其實在c++中用到這種啞元的也只有在postfix   ++   和--了

例子:int i=10;

cout例:

#include

using namespace std;

class fraction                                           //數類;

fraction& operator++()                           //字首自加重載;(前置版本prefix)

const fraction operator ++(int)                  //字尾自加重載;(後置版本postfix)

};ostream& operator<

{out

{fraction b(10,10);

cout前置版本返回乙個引用【fraction& operator++()】,後置版本返回乙個const值【const fraction operator ++(int)】。

後置版本是利用前置版本來實現的。節約**,控制**有餘。

前置版本的效率高,因為後置版本需要呼叫前置版本,所有後置版本效率比前置要低。(++i比i++效率高。)

在後置版本裡,人為新增乙個引數(int),主要是為了區別前置版本,這個引數不會被使用。

簡述字首運算子與字尾運算子

對於初學者,經常糾結的乙個問題就是 for 迴圈中的迴圈量遞增過程中,到底是應該用字首運算子還是字尾運算子。首先談一下字首運算子和字尾運算子有什麼區別 粗略的講,這裡涉及到表示式和語句 和順序點,有點複雜,暫時不在這裡闡述。在大多數情況下 乙個正常的軟體工程規定的程式設計規範和風格,應該是盡量避免那...

字首運算子和字尾運算子優先順序

字首運算子是從右到左 字尾運算子是從左到右!如 1.pt 現將 應用於pt,然後將 應用於被遞增後的pt double x pt increment pointer,take the value i,e.arr 2 or 23.42.pt 另一方面,pt意味著先取得pt指向的值,然後將這個值加1,即...

運算子過載之過載型別運算子

普通型別 類型別 呼叫對應的只有乙個引數 引數的型別就是這個普通型別 的建構函式 需求 boy boy1 10000 薪資 建構函式boy int boy boy2 rock 姓名 建構函式boy char 普通型別賦值給類型別其實很簡單,就是專門的對這個賦值的型別定義乙個建構函式。編譯器在執行 的...