複習 C 之過載操作符operator

2021-09-19 03:33:47 字數 1855 閱讀 7685

過載操作符就是為了實現類的多型性,讓運算子與類結合,產生新的含義。

使用類的成員函式或友元函式(類外的普通函式)實現。

//過載+,=,<<,>>

#includeusing namespace std;

//過載操作符一定要有乙個物件參與

class cnum

int operator=(int num) //過載 =

int operator+(int num) //過載 +

int operator+(cnum& num) //使用引用是為了修改引數裡面的值,下面的例子同理 };

// 類外過載的需要兩個引數,第乙個是符號左邊的,第二個是符號右邊的

int operator+(int a, cnum& num)

//過載輸出

ostream& operator<<(ostream& os,cnum& num) //同樣的這裡返回值使用了引用,

//因為需要使用的就是os本身,而不是拷貝構造的os

//過載輸入

istream& operator<<(istream& is,cnum& num)

int main()

//單目運算子在類內過載就行

#include using namespace std;

class cnum

public:

//同乙個作用域裡,相同的函式名,根據引數來判斷是哪個

int operator++() //++a

int operator++(int a) //a++ 加之前得有個東西記錄一下,所以有引數 };

int main()

在之前寫過鍊錶類,如果在遍歷的時候,不想使用ptemp=ptemp->pnext,誒我就想用++,可以這麼改。

#includeusing namespace std;

struct node

;class clist //鍊錶類

node* end()

public:

clist() //建立空鍊錶

clist(int ncount) //建立有ncount個結點的鍊錶 }

~clist()

public:

void push_back(int nvalue) //在鍊錶上新增乙個數

else //鍊錶有結點的時候

m_nlength++;

} void pop_front() //刪除乙個鍊錶結點

//有多個結點的時候

node *pdel = m_phead;

m_phead = m_phead->pnext;

delete pdel;

pdel = null;

m_nlength--;

} void show() //測試**

cout << "nlength:"return m_ptemp;

} int operator*() //為了輸出方便

bool operator!=(node* ptemp) };

int main()

cout << endl;

//***************=對比**********

node* ptemp = lst.begin();

while(ptemp != lst.end())

cout << endl;

//***********************************

system("pause");

return 0;

}

C 之操作符過載

1.所謂過載,就是賦予其新的意義。函式可以過載,操作符也可以過載。操作符的過載給我們的程式設計帶來了很大的便利,因為操作符只能對基本的資料型別進行操作,而對使用者自定義的類等資料結構型別不支援。因此只能對其操作符進行過載之後,才能更加方便地操作我們自定義的類物件等資料型別。但是值得注意的是並不是c ...

c 之操作符過載

include using namespace std class complex void printcom test add2 test t2 this 函式返回元素 complex operator complex c1 complex operator complex operator in...

重溫C 之 過載操作符

過載操作符是具有特殊名稱的函式 保留字operator 後接需要過載的操作符。過載操作符必須具有乙個類型別或列舉型別的運算元。不能被過載的操作符有 以及?一般將算術何關係操作符定義為非成員函式。而將賦值操作符定義為成員函式。當操作符為成員函式時,this指標指向左操作符。io操作符必須定義為非成員函...