C (6) 運算子過載 一

2021-07-31 23:59:17 字數 2229 閱讀 7029

運算子過載的概念

操作符過載的一般規則

運算子過載方法

運算子過載有兩個方法:乙個是利用全域性函式進行運算子過載;另一種是利用成員函式進行運算子過載。

利用成員函式

為什麼要進行運算子過載?

我們知道,資料型別開闢了記憶體用於存放變數和提供了基於變數值的運算。類定義了物件,提供了一種新的資料儲存方法。所以要提供相應的對資料物件的操作,這就是運算子過載。

運算子過載的練習

過載複數的加減法

過載雙目運算子: 複數+=-=操作符

過載單目運算子: 前++和 前--過載單目運算子: 後++和 後--過載輸入輸出操作符

過載賦值操作符

#define _crt_secure_no_warnings 

#include

using

namespace

std;

/*定義複數類complex 實現

1.基本運算子+ - 過載

2.雙目運算子 += -=過載

3.單目運算子 前++ 前-- 後++ 後--的過載

4.輸入輸出運算子過載

*/class complex

/*帶引數的建構函式*/

complex(double m_real, double m_virtual)

/*運算子過載: + - */

complex operator +(complex &c1)

complex operator -(complex &c1)

/*運算子過載: += 和 -= */

/*實現 x1+=x2+=x3 這樣的連加功能 */

complex & operator += (complex &c1)

complex& operator -=(complex & c1)

/*運算子過載: 前++和前--*/

complex & operator++ ()

complex & operator-- ()

/*運算子過載: 後++和後--*/

const complex operator++ (int)

const complex operator-- (int)

};/*全域性函式部分*/

/*過載輸出運算子*/

/*輸入輸出運算子過載為了保持形式和標準輸入輸出一致,只能使用全域性函式來過載左移運算子*/

void

operator

<<(ostream & os, complex &c)

else

if (c.m_virtual == 0)

else

}/*過載輸入運算子*/

/*輸入輸出運算子過載為了保持形式和標準輸入輸出一致,只能使用全域性函式來過載左移運算子*/

void

operator>>(istream & is, complex & c)

/*定義student類實現

5.賦值運算子過載

*/class student

student(const student& s)

~student()

this->id = -1;

}student& operator = (const student& s)//先釋放原有的堆記憶體空間

this->id = s.id;

int len = strlen(s.name) + 1;

this->name = new

char[len];

strcpy(this->name, s.name);

return *this;

}};void

operator

<<(ostream & os, student &s)

/*測試模組部分*/

void test01()/*測試複數的加法和減法功能,以及過載輸出的運算子*/

void test02()/*實現 連+= 和 連-= 功能*/

void test03()/*實現 前連++ 和 前連-- 功能*/

void test04()/*實現 後++ 和 後-- 功能*/

void test05()/*過載輸入輸出運算子*/

void test06()

int main(void)

C 6中NULL條件運算子

早期版本的c 更新介紹了可為 null 的型別和 null 合併運算子的概念,在處理可以為 null 值的值時減少樣本 量。c 6將繼續此主題,其中包含 null 條件運算子 當在表示式的右側的物件上使用時,如果物件不 null,則為 null 條件運算子將返回成員值,否則 null var ss ...

C 6 操作符過載

過載語法 返回值型別 operator 操作符 引數列表 必須至少乙個引數是類,否則編譯器不能分清是不是過載的操作符 對於二元操作符函式為某類的成員函式的時候,只能顯式宣告乙個形引數作為右運算元,左運算元是這個類的物件 對於一元操作符函式為某類的成員函式的時候就不需要引數了。本來是幾元操作符,過載以...

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

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