舉報
分類: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 普通型別賦值給類型別其實很簡單,就是專門的對這個賦值的型別定義乙個建構函式。編譯器在執行 的...