類成員訪問運算子( -> )可以被過載,但它較為麻煩。它被定義用於為乙個類賦予"指標"行為。運算子 -> 必須是乙個成員函式。如果使用了 -> 運算子,返回型別必須是指標或者是類的物件。
運算子 -> 通常與指標引用運算子 * 結合使用,用於實現"智慧型指標"的功能。這些指標是行為與正常指標相似的物件,唯一不同的是,當您通過指標訪問物件時,它們會執行其他的任務。比如,當指標銷毀時,或者當指標指向另乙個物件時,會自動刪除物件。
間接引用運算子 -> 可被定義為乙個一元字尾運算子。也就是說,給出乙個類:
class類ptr的物件可用於訪問類x的成員,使用方式與指標的用法十分相似。例如:ptr;
voidf(語句 p->m 被解釋為 (p.operator->())->m。同樣地,下面的例項演示了如何過載類成員訪問運算子 ->。ptrp
)
#include當上面的**被編譯和執行時,它會產生下列結果:#include
using
namespace
std;
// 假設乙個實際的類
class
objvoidg()
const
};// 靜態成員定義
intobj
::i =10
;int
obj::j =
12;// 為上面的類實現乙個容器
class
objcontainer
friend
class
smartpointer;};
// 實現智慧型指標,用於訪問類 obj 的成員
class
smartpointer
// 返回值表示列表結束
bool
operator
++()
// 字首版本
bool
operator
++(int
)// 字尾版本
// 過載運算子 ->
obj*
operator
->()
const
returnoc.
a[index];}
};int
main
()smartpointersp(
oc);
// 建立乙個迭代器
dowhile(sp
++);
return0;
}
10from:1211
1312
1413
1514
1615
1716
1817
1918
2019
21
C 運算子過載函式之成員運算子過載函式
5.2.3 成員運算子過載函式 在c 中可以把運算子過載函式定義為某個類的成員函式,稱之為成員運算子過載函式。1.定義成員運算子過載函式的語法形式 1 在類的內部,定義成員運算子過載函式的格式如下 函式型別 operator 運算子 形參表 2 成員運算子過載函式也可以在類中宣告成員函式的原型,在類...
運算子過載 類 C
運算子過載 就是對已有的運算子 c 中預定義的運算子 賦予多重的含義,是同乙個運算子作用與不同型別的資料是導致不同型別的行為 實質 函式過載 1 可以過載為普通函式也可以過載為成員函式 2 把含運算子的表示式轉換成對運算子函式的呼叫 3 把運算子的運算元轉換 成 運算子函式的引數 4 運算子被多次過...
運算子過載 成員函式
檔名稱 test.cpp 完成日期 2016年5月14日 問題描述 請用類的成員函式,定義複數類過載運算子 使之能用於複數的加減乘 include using namespace std class complex complex double r,double i complex operator...