C 三大函式 The Big Three

2021-07-11 22:06:04 字數 788 閱讀 5898

c++三大函式:

函式模樣:~s()

當乙個物件超出作用域或執行delete的時候,析構函式就被呼叫。

函式模樣:s(const s& s)

以下情況,複製建構函式均會被呼叫:

函式模樣:const s& operator=(const s& s)

當=應用於兩個已經構造的物件時,就呼叫複製賦值運算子operator=。

s s1;

s1 = s2; //注意與s s1 = s2; 的區別

三大函式不手動實現的時候,會使用預設的版本。比如operator=的預設版本會依次為資料成員複製,如果是基本資料型別自然沒什麼問題,但當資料成員含有指標的時候,operator的只會進行淺複製,即只是指標本身被複製,而不是指標所指向的內容被複製。見下例。

class s

};void f()

很明顯這不是我們想要的,我們想讓不同的物件的值不互相影響,此時需要實現深複製,見下例。

#include using namespace std;

class s

s(const s& rhs)

const s& operator=(const s& rhs) //rhs=right-hand side, rhs其實就是物件的別名,對引用操作就是物件本身操作 ,這裡是s1

};int main()

原文:

C 三大函式 The Big Three

本文用markdown編輯,這裡對markdown的支援不完善,更好的閱讀體驗請移步 我的markdown文字 c 三大函式 函式模樣 s 當乙個物件超出作用域或執行delete的時候,析構函式就被呼叫。函式模樣 s const s s 以下情況,複製建構函式均會被呼叫 函式模樣 const s o...

C 三大函式該寫就要寫

記得c 沉思錄上說過,如果資料成員有指標型別的,最好把三大函式補全,不然的話容易產生淺拷貝和記憶體洩露。這裡給出乙個簡單的例子。include include include include using namespace std class cdemo cdemo const char s str...

python c函式 三大基礎函式

在python中有三個基礎函式,分別是filter map 和reduce 他們分別為我們提供過濾 對映和聚合的功能。上一節我們簡單的使用了filter 函式結合匿名函式,下面我們會詳細介紹它的用法。1.filter 函式 在資料篩選和過濾的時候我們通常會採用filter 函式幫助我們快速的解決問題...