深入C 的運算子過載

2021-08-02 13:08:45 字數 2018 閱讀 4157

對於簡單的運算子,可以參考之前的博文。之後會有一篇關於從等號運算子過載的角度研究深淺拷貝的博文。

這裡是講:逗號,取成員運算子,輸入輸出運算子,下標運算子,括號,new和delete的過載。

逗號運算子過載需要乙個引數,並且返回自身類。逗號運算子在複製操作中比較常見,下面就是以賦值操作為例的逗號運算子過載。

#include

#include

using

namespace

std;

class tem;

tem::tem(int xx=0)

tem tem::operator , (tem t)

void tem::display()

返回類型別的指標變數,符合平時的用法,這樣就可以不用在宣告變數時候使用指標,但是之後可以按照指標的方式呼叫,簡單方便。

#include

using

namespace

std;

class tem

}; int main()

>>,《運算子過載分別在cin、cout之後呼叫。我們需要用友元運算子對他們進行過載,注意返回型別分別是istream 和 ostream。

#includeusing namespace std;

class

date

friend ostream& operator <<(ostream &stream,const

date &date)

}; int main()

下標運算子只能被過載為類的非靜態成員函式,不能過載為友元函式和普通函式。

下標運算子只能有乙個引數,多和陣列有關,返回引用型別可以檢視和修改陣列元素。

#include

#include

using

namespace

std;

const

int len = 3;

class tem

};int main()

括號運算子只能被過載為類的非靜態成員函式。並且引數個數和返回型別沒有限制

所以我們可以實現很多指令碼語言中或者string庫裡面的切片操作。

#include

#include

using

namespace

std;

const

int len = 10;

class tem

int * operator ()(int start ,int end)

};int main()

cout

0;}

注意new和delete過載的時候引數的形式和返回型別即可。

#include

#include

using

namespace

std;

const

int len = 10;

class tem;

void * tem::operator

new(size_t size)

void * tem::operator

new(size_t size,char p)

void tem::operator

delete(void *p)

int main()

csdn位址 :

也可以致信進行交流 : [email protected]

深入C 的運算子過載

對於簡單的運算子,可以參考之前的博文。之後會有一篇關於從等號運算子過載的角度研究深淺拷貝的博文。逗號運算子過載需要乙個引數,並且返回自身類。逗號運算子在複製操作中比較常見,下面就是以賦值操作為例的逗號運算子過載。include includeusing namespace std class tem...

深入C 的運算子過載

對於簡單的運算子,可以參考之前的博文。之後會有一篇關於從等號運算子過載的角度研究深淺拷貝的博文。這裡是講 逗號,取成員運算子,輸入輸出運算子,下標運算子,括號,new和delete的過載。逗號運算子過載需要乙個引數,並且返回自身類。逗號運算子在複製操作中比較常見,下面就是以賦值操作為例的逗號運算子過...

C 運算子過載 過載特殊運算子

賦值運算子用於同類物件間的相互賦值。賦值運算子只能被過載為類的非靜態成員函式,不能過載為友元函式和普通函式。對於使用者自定義的類而言,如果沒有過載賦值運算子,那麼c 編譯器會為該類提供乙個預設的過載賦值運算子成員函式。預設賦值運算子的工作方式是按位對拷,將等到右邊物件的非靜態成員拷貝給等號左邊的物件...