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 函式幫助我們快速的解決問題...