C 中的運算子過載

2021-07-22 18:30:44 字數 2913 閱讀 6492

#include#includeusing namespace std;

class my_complex

{public: //關係運算子過載

bool operator == (const a& );

bool operator != (const a& );

bool operator < (const a& );

bool operator <= (const a& );

bool operator > (const a& );

bool operator >= (const a& );

public: //邏輯運算子過載

bool operator || (const a& );

bool operator && (const a& );

bool operator ! ();

public: //單目運算子過載

my_complex& operator + ();

a& operator - ();

a* operator & ();

//a& operator * ();

public: //自增運算子過載

a& operator ++ ();//前置++

a operator ++ (int);//後置++

a& operator --();//前置--

a operator -- (int);//後置--

public:

a operator | (const a& );

a operator & (const a& );

a operator ^ (const a& );

a operator << (int i);

a operator >> (int i);

a operator ~ ();

public: //賦值運算子的過載

a& operator += (const a& );

a& operator -= (const a& );

a& operator *= (const a& );

a& operator /= (const a& );

a& operator %= (const a& );

a& operator &= (const a& );

a& operator |= (const a& );

a& operator ^= (const a& );

a& operator <<= (int i);

a& operator >>= (int i);

public: //記憶體運算子的過載

void *operator new(size_t size);

void *operator new(size_t size, int i);

void *operator new(size_t size);

void operator delete(void*p);

void operator delete(void*p, int i, int j);

void operator delete (void* p);

public:

/* 特殊的運算子過載 下面的運算子只能用一種,特殊吧。 這些運算子的過載只能是成員函式 */

a& operator = (const a& );

char operator (int i);//返回值不能作為左值

const char* operator () ();

t operator -> ();

/*下面的型別轉換符*/

operator char* () const;

operator int ();

operator const char () const;

operator short int () const;

operator long long () const;

public:

/*而這些只能以友元函式的形式過載*/

friend inline ostream &operator << (ostream&, a&);//輸出流

friend inline istream &operator >> (istream&, a&);//輸入流

public: //一般運算子的過載

my_complex operator +(my_complex &sd);

my_complex operator - (my_complex &sd);

my_complex operator * (my_complex &sd);

my_complex operator / (my_complex &sd);

friend complex operator +(const complex &c1, const complex &c2);

friend complex operator -(const complex &c1, const complex &c2);

friend complex operator *(const complex &c1, const complex &c2);

friend complex operator /(const complex &c1, const complex &c2);

public :

void get_data(void )

{ cout << "real = "<< real<

C 中運算子過載

運算子過載使得使用者自定義的資料以一種更簡潔的方式工作。比如int x,y 可以為y x y 而 my c1,c2 如果想使得兩個自定義的物件相加,以前只能調 用函式計算它們的和。而現在只要定義了運算子過載就能實現c1 c1 c2.所謂過載,就是重新賦予新的含義。函式過載就是對乙個已有的函式賦予新的...

C 中運算子過載

運算子過載可以寫在類的內部,也可以寫成全域性函式形式,其中運算子 在過載時必須宣告為類的成員函式 而運算子 sizeof 不能被過載 演算法運算子的過載不會改變運算子原有的優先順序。例子 include include include using namespace std class comple...

C 中的運算子過載(一) 運算子過載的概念

概述 運算子過載,就是對已有的運算子重新進行定義,賦予其另一種功能,以適應不同的資料型別。運算子過載 operator overloading 只是一種 語法上的方便 也就是它只是另一種函式呼叫的方式,只是為了方便我們使用,運算子只能運算內建的資料型別,對於自定義的資料型別不能運算,所以我們可以過載...