C 預設的建構函式以及運算子過載關鍵點

2021-05-25 00:16:03 字數 681 閱讀 7475

1、預設情況下編譯器為乙個類定義那些建構函式?

如果我們沒有定義乙個類的預設建構函式,編譯器就會自動定義乙個函式體為空的建構函式。

另外,編譯器還可以自動定義operator =()賦值函式,來進行同一類的物件之間的賦值。

還有,經過測試,編譯器還會自動新增 複製建構函式

2、一般情況下,我們把二元操作符定義成非成員函式(但可以是友元函式,這要看是否訪問類的內部成員),一元操作符定義為成員函式。如果二元運算子被定義成成員函式,雖然可以減少乙個引數,但是要求必須是該類的物件在運算子之前,也就是不滿足交換律。所以,一般情況下二元操作符定義成非成員函式。

3、有些運算子必須過載為成員函式,有些則必須過載為非成員函式

c++規定,有些運算子(如賦值運算子,下標運算子,函式呼叫運算子,型別轉換函式)必須定義為類的成員函式;有的運算子則不能定義成成員函式(如流的插入「<<」和提取">>"運算子)。

型別轉換函式形式:

operator 型別名()

注意:函式名前面不指定函式型別,函式沒有引數。如:

class complex

//...

private:

float real;

float imag;

};4、如果過載了operator +()函式,最好也過載operator +=()函式。

(可以參看另一篇例項文章:

C 結構體的建構函式以及運算子的過載

由於結構體經常用到,所以對結構體的用法做了一下整理 includeusing namespace std struct node 建構函式 過載輸出流 friend ostream operator ostream out,const node p 過載 成員函式 bool operator con...

C 友元函式以及運算子過載

一 友元函式的作用 函式的私有和保護變數在類內可以訪問,在類外只可訪問公有變數 派生類在類內只可訪問其基類的公有變數和保護變數,在類外只可訪問其公有變數 要看具體的繼承型別 因此,在有些情況下,需要訪問類的私有或保護變數時,不得不呼叫其成員函式,因為只有成員函式才有訪問的許可權。因而多出許多時間開銷...

C 類與物件 拷貝建構函式以及運算子過載

本篇講述以上兩種預設函式 我們可以建立乙個物件,那麼能否再建立乙個和這個物件一模一樣的的新的物件呢?這就引入了拷貝建構函式 拷貝建構函式與之前講的建構函式一樣,函式名為類名,當用已存在的類型別的物件建立新的物件時,編譯器會自動呼叫拷貝建構函式。class a1 private int a doubl...