C 基礎語法 特性(6) 物件導向之運算子過載

2022-07-07 05:57:11 字數 1505 閱讀 4601

運算子過載,簡直使c++變成了python,過載運算子後,物件可進行+-*/=等操作

系統自動實現的2個運算子過載:

= 和 &

class

類名

friend 返回值型別

operator

運算子(形參表)

/*簡單示例

*/int

operator +(int

b) friend

intoperator +(int b,類名 &物件引用)

//流插入和提取運算子,符號左側為cout或cin,成員函式無法滿足

friend ostream &operator

<< (ostream &output,類名&物件名)

friend istream &operator >> (istream &input,類名&物件名)

//過載強制型別轉換,無須指定返回型別

//double a=物件+6.0 允許

operator

double

()

/*過載自增

*/型別 & operator++();//

預設為前置符號++i

型別 & operator++(int);//

增加無用引數,可時實現i++

};//

類體外定義函式體

返回值型別 類名::operator+(形參表)

系統自動過載的=為淺拷貝,當類中有指標時,被重寫賦值物件的指標與舊物件指標一致

對於此情況可改為深度拷貝:

1.構造和複製建構函式裡,為新物件的指標新申請空間並初始化

2.析構函式裡釋放指標記憶體空間

3.=函式裡,釋放當前物件的指標的舊空間,重新申請空間

class

a a(

const a&tmp)

} ~a()

a &operator=(const a &tmp)

} ;

可過載運算子

運算子說明

+-*/%

雙目算術運算子

關係運算子

||,&&,!

邏輯運算子

+,-,*(指標),&(取址)

單目運算子

++,--

自增自減

|,&,~,^,<<,>>

位運算=,+=,-=......

賦值運算子

new,delete,new,delete

空間申請與釋放

()函式呼叫,->成員訪問,,逗號,下標

其他運算子

不可過載運算子

.成員訪問

.*,->*

成員指標

::域運算子

sizeof

長度運算

?:條件運算子

#預處理

C 基礎語法 特性(3) 物件導向之特殊成員

構造和析構呼叫順序為 基類 父類 建構函式 成員類構造 本類構造 基類構造與繼承順序有關 成員類構造與定義順序有關 本類析構 被包含類析構 基類析構函式 class 類名 類名 參數列 成員1 引數 指標成員2 new型別 型別轉換建構函式 類名 乙個形參 複製建構函式,有2種 一般使用const版...

c 物件導向特性之繼承(2)

繼承共分為三種 public 公有繼承 protected 保護繼承 private 私有繼承 於此同時,每個類中的成員也具有public,protected,private這三種特性,每種特性下的成員在每種繼承方式下都有不同的結果,總結如下 繼承方式 本來的屬性 轉換後的屬性 public pub...

C 的物件導向特性之封裝

在c 語言中,共有五種訪問修飾符 public private protected internal protected internal。public公有訪問。不受任何限制。private私有訪問。只限於本類成員訪問,子類,例項都不能訪問。protected保護訪問。只限於本類和子類訪問,例項不能...