一:關於 string 類的實現過程中所涉及的三大函式:拷貝建構函式、拷貝賦值函式、析構函式
以下為類體部分:
classstring
private
:
char*m_data;
};
接下來是關於string類中建構函式、拷貝建構函式、拷貝賦值函式以及析構函式的具體定義,注意將以上函式寫成 inline 函式:
(1)string 類中建構函式的定義:
inlinestring::string(
const
char*cstr)
else
}
(2)拷貝建構函式的定義:
inlinestring::string(
const string&str)
(3)拷貝賦值函式的定義:
inlinestring& string::operator=(const string&str)
(4)析構函式:
inlinestring::~string()
二:stack棧,heap堆
heap,由作業系統提供的一塊global記憶體空間,程式可動態分配,從中獲得某個區塊。
例子:
classcomplex
...
其中,c1 所占用的空間就來自於 stack,而 complex(3)是個臨時物件,其所占用的空間是以 new 自 heap 動態分配而得,並由 p 指向。
三、生命週期
(1)stack object 的生命週期
classcomplex ;
...
c1是stack object,其生命在作用域結束之際結束。這種作用域內的 object ,又稱為 auto object,因為它會被自動清理。
(2)static local objects 的生命週期
classcomplex ;
...
c2 是 static object, 其生命在作用域結束之後仍然存在,直到整個程式結束。
(3)global objects 的生命週期
classcomplex ;
...complex c3(
1,2);
intmain()
c3 是 global object,其申明在整個程式結束之後才結束,可視為一種 static object,其作用域是整個程式。
(4)heap objects 的生命週期
classcomplex ;
...
四、new 和 delete
new :先分配記憶體,再呼叫建構函式
delete:先呼叫析構函式,再釋放記憶體
五、關於 static
呼叫 static函式的方式有兩種:
(1)通過 object 呼叫;
(2)通過 class name 呼叫
第四周筆記 c Boolan
從這週開始,進入了c 下半部分的學習,這周學習的東西相對之前來說比較瑣碎,但都是值得注意的地方。一 轉換函式 轉換函式是一種特殊型別的類成員函式。它定義了乙個由使用者定義的轉換,以便把乙個類物件轉換成某種其他的型別。在類的宣告中,通過指定關鍵字operator,並在其後加上轉換的目標型別可以來宣告轉...
第二週筆記
直流電機 從1821年法拉第發現有電流流過的導線在磁場中會受到磁場力開始,到1831年皮克西製成一台旋轉式直流發電機。此後科學家的研究則主要在提高利用率 減小體積 減少能量消耗 精確控制等方向。但是直流電機卻有著一些固有的缺點,電壓低時傳輸損耗大,高壓直流電機製造困難,單機容量大時難以實現控制,於是...
Coursera Scala課程 第二週筆記
higher order functions 這被稱為 高階函式 既可以當引數傳,也可以當返回值。最早的形式 def sum f int int,a int,b int int if a b 0 else f a sum f,a 1,b def sumints a int,b int sum id,...