C 中 操作符過載

2021-07-02 06:31:34 字數 1125 閱讀 5913

在實際程式中遇到一操作符問題,記錄下來方便以後查詢。在寫hashtable資料結構中,遇到操作符過載問題,具體需求如下:

1.      a[x] = b; //如果a[x]為空,則新增記錄

2.      b = a[x]; //如果a[x]為空,則提示出錯

對操作符過載之後發現根本不能解決問題,查詢一些資料後發現該問題為過載後的讀寫問題,乙個過載解決不了問題。上面兩點展開如下:

1.      a.operator(x).opeator=(b) // a.operator=(b)

2.      b.operator=(a.operator(x))

將a.operator(x)作為物件a後,問題1就成了物件a的賦值操作符過載問題,問題2就為物件a的型別轉換問題。增加乙個**類就可以有效分離兩種情形了,具體實現如下:

#include #include using namespace std;

class a }

const int& operator(const int &u) const

int & operator(const int &u) };

class b }

private:

int read(int idx)

const int& write(int idx, int value)

class proxy

proxy(b *pb, int idx):pb_(pb),v_(idx) {}

public:

operator int()

const int& operator = (const int &val)

};public:

proxy operator(const int &idx)

};int main(int argc, char *argv) {

a a(0);

b b(0);

int value;

a[1] = 3; // writing

value = a[2]; //reading

value = 4;

cout << "a[1]:" << a[1] << ",value:"<< value << ",a[2]:" << a[2]<

c 中 操作符過載

操作符過載 1.有先後順序,如 t3 t1 t2 則t1 t2等價於t1.operate t2 2.對 操作符進行過載時,如aa是有本質區別的。操作符過載就是用函式的方法對乙個操作符進行重新定義,在該函式中定義了操作符所要完成的功能。其中cout是輸出流ostream中的物件 元素 3.a cout...

c 中過載《操作符

在類定義中,有時候我們需要直接利用cout來列印出類中的資料,此刻就需要過載 操作符來實現 假定定義了乙個類time 然後宣告了乙個類 time a cout 這樣的語法肯定是會報錯的,此刻就需要過載operator 要怎麼做呢?首先,在過載函式中,要訪問到類time中的私有成員的資料,所以我們需要...

C 中操作符過載

c 中除了能進行函式過載,還能對操作符進行過載,在分析操作符過載之前,我們先來看看下邊的 include include using namespace std class complex 定義乙個複數類 int geti int getj int main 實則編譯是無法通過的,因為c 中並沒有物...