C 類成員訪問運算子 過載

2021-07-08 18:37:19 字數 1433 閱讀 4604

類成員訪問運算子( -> )可以被過載,但它較為麻煩。它被定義用於為乙個類賦予"指標"行為。運算子 -> 必須是乙個成員函式。如果使用了 -> 運算子,返回型別必須是指標或者是類的物件。

運算子 -> 通常與指標引用運算子 * 結合使用,用於實現"智慧型指標"的功能。這些指標是行為與正常指標相似的物件,唯一不同的是,當您通過指標訪問物件時,它們會執行其他的任務。比如,當指標銷毀時,或者當指標指向另乙個物件時,會自動刪除物件。

間接引用運算子 -> 可被定義為乙個一元字尾運算子。也就是說,給出乙個類:

class

ptr;

ptr的物件可用於訪問類x的成員,使用方式與指標的用法十分相似。例如:

voidf(

ptrp

)

語句 p->m 被解釋為 (p.operator->())->m。同樣地,下面的例項演示了如何過載類成員訪問運算子 ->。

#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;

}

當上面的**被編譯和執行時,它會產生下列結果:

10

1211

1312

1413

1514

1615

1716

1817

1918

2019

21

from: 

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...