疫情學習第九天 C

2021-10-02 15:48:34 字數 2826 閱讀 9290

我還在學c++,隔一天學一次,我喜歡在這個房間裡面學習。

4.2 物件的初始化和清理

4.2.1 建構函式(初始化)和析構函式(清理)

由編譯器自動呼叫,如果自己不提供,編譯器會提供,編譯器提供的是函式是空實現。

//建構函式 進行初始化和清理

//建構函式,沒有返回值不用寫void 函式名與類名相同 建構函式可以有引數可以發生過載

//建構函式,沒有返回值也不寫void

//函式名稱與類名相同

//建構函式可以有引數,因此可以發生過載

//程式在呼叫物件時候會自動呼叫構造,無須手動呼叫,而且只會呼叫一次

class

person

//析構函式

//析構函式,沒有返回值也不寫void

//函式名稱與類名相同,在名稱前加上符號 ~

//析構函式不可以有引數,因此不可以發生過載

///程式在物件銷毀前會自動呼叫析構,無須手動呼叫,而且只會呼叫一次

~person()

};void

test01()

intmain()

4.2.2 析構函式的分類及呼叫

兩種分類方式:

​ 按引數分為: 有參構造和無參構造

​ 按型別分為: 普通構造和拷貝構造

三種呼叫方式:

​ 括號法

​ 顯示法

​ 隱式轉換法

//1、建構函式分類

// 按照引數分類分為 有參和無參構造 無參又稱為預設建構函式

// 按照型別分類分為 普通構造和拷貝構造

class

person

//有參建構函式

person

(int a)

//拷貝建構函式,傳進乙個別人來,person和傳進來的一樣,但是不能改本體,用引用的方式傳進來

person

(const person &p)

//析構函式

~person()

public

:int age;};

//2、建構函式的呼叫

//呼叫無參建構函式

void

test01()

//呼叫有參的建構函式

void

test02()

intmain()

4.2.3 拷貝函式的呼叫時機

c++中拷貝構造函式呼叫時機通常有三種情況

1.使用乙個已經建立完畢的物件來初始化乙個新物件

2.值傳遞的方式給函式引數傳值

3.以值方式返回區域性物件

class

person

person

(int age)

person

(const person& p)

//析構函式在釋放記憶體之前呼叫

~person()

public

:int mage;};

1. 使用乙個已經建立完畢的物件來初始化乙個新物件,最常用的方式

void

test01()

//2. 值傳遞的方式給函式引數傳值

//相當於person p1 = p;

void

dowork

(person p1)

//用拷貝值傳遞

void

test02()

//3. 以值方式返回區域性物件

person dowork2()

void

test03()

intmain()

4.2.4 構造函式呼叫規則

預設情況下,建立乙個類,c++編譯器至少給每乙個類新增3個函式

1.預設建構函式(無參,函式體為空)

2.預設析構函式(無參,函式體為空)

3.預設拷貝建構函式,對屬性進行值拷貝

構造函式呼叫規則如下:

如果使用者定義有參建構函式,c++不再提供預設無參構造,但是會提供預設拷貝構造

如果使用者定義拷貝建構函式,c++不會再提供其他建構函式

class

person

//有參建構函式

person

(int a)

//拷貝建構函式

person

(const person& p)

//析構函式

~person()

public

:int age;};

void

test01()

void

test02()

intmain()

4.2.5 深拷貝和淺拷貝

深淺拷貝是面試經典問題,也是常見的乙個坑

淺拷貝:簡單的賦值拷貝操作

深拷貝:在堆區重新申請空間,進行拷貝操作

class

person

//初始化列表方式初始化

person

(int a,

int b,

int c)

:m_a

(a),

m_b(b)

,m_c

(c)void

printperson()

private

:int m_a;

int m_b;

int m_c;};

intmain()

學習第九天

怎麼沒有題面?我怎麼知道?換個鏈結吧!向洛谷勢力低頭 我們畫一下這個小螞蟻走出來的圖形,我們就會發現,是乙個類似長城的形狀 這個題,求最大值,我們應該能很容易想到用動態規劃 那麼對於乙個路徑圍成的圖形,我們需要描述的是它的位置和形狀,所以這顯然是個高維的dp 位置很好描述,但是形狀太複雜了,我們怎麼...

python學習 第九天

在下這廂有禮了 爬蟲簡單實現 coding utf 8 import urllib def gethtml url page urllib.urlopen url html page.read returnhtml html gethtml print html l urllib 模組提供了讀取we...

第九天學習日誌

學習日誌 蘇嵌專案實訓 姓名 梁軒齊 日期 2018.7.12 今日學習任務 行列式鍵盤輸入及led顯示 今日任務完成情況 基本完成,但除錯不出來 今日中發現問題彙總 寫 很吃力,基本框架可以寫出,但是,除錯不出來。今日未解決問題 除錯不出 今日開發收穫 學會了程式設計過程中的一些思路,可以進行一些...