第二週筆記 c Boolan

2022-09-13 21:33:24 字數 1634 閱讀 9807

一:關於 string 類的實現過程中所涉及的三大函式:拷貝建構函式、拷貝賦值函式、析構函式

以下為類體部分:

class

string

private

:

char*m_data;

};

接下來是關於string類中建構函式、拷貝建構函式、拷貝賦值函式以及析構函式的具體定義,注意將以上函式寫成 inline 函式:

(1)string 類中建構函式的定義:

inline

string::string(

const

char*cstr)

else

}

(2)拷貝建構函式的定義:

inline

string::string(

const string&str)

(3)拷貝賦值函式的定義:

inline

string& string::operator=(const string&str)

(4)析構函式:

inline

string::~string()

二:stack棧,heap堆

heap,由作業系統提供的一塊global記憶體空間,程式可動態分配,從中獲得某個區塊。

例子:

class

complex

...

其中,c1 所占用的空間就來自於 stack,而 complex(3)是個臨時物件,其所占用的空間是以 new 自 heap 動態分配而得,並由 p 指向。

三、生命週期

(1)stack object 的生命週期

class

complex ;

...

c1是stack object,其生命在作用域結束之際結束。這種作用域內的 object ,又稱為 auto object,因為它會被自動清理。

(2)static local objects 的生命週期

class

complex ;

...

c2 是 static object, 其生命在作用域結束之後仍然存在,直到整個程式結束。

(3)global objects 的生命週期

class

complex ;

...complex c3(

1,2);

intmain()

c3 是 global object,其申明在整個程式結束之後才結束,可視為一種 static object,其作用域是整個程式。

(4)heap objects 的生命週期

class

complex ;

...

四、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,...