c 學習筆記(9)

2021-10-05 13:43:09 字數 1849 閱讀 2874

拷貝構造函式呼叫時機

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

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

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

class

person

~person()

person

(int age)

person

(const person &p)

}void

test1()

void

test2()

void

dowork

(person p)

void

test3()

person dowork2()

構造函式呼叫規則

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

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

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

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

規則如下:

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

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

深拷貝與淺拷貝

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

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

class

person

person

(const person&p)

}void

test1()

void

test2()

//函式記憶體釋放時,先入後出原則

初始化列表

作用:c++提供了初始化列表語法,用來初始化屬性

語法:建構函式():屬性1(值1),屬性2(值2)…()

class

person

}//這樣構造時候不用傳參,也會有初始值

類物件作為類成員

c++類中的成員可以是另乙個類的物件,我們稱該成員為物件成員

class a{}

class b

重點在於析構函式的先後

class

phone

string p_name;

}class

person

string m_name;

phone m_phone;

}

當其他類物件作為本類成員,構造時候先構造類物件,再構造自身

析構的順序與構造的順序是相反的

靜態成員

靜態成員就是在成員變數和成員函式前加上關鍵字static,成為靜態成員

靜態成員分為:

靜態成員變數

1.所有成員共享乙份資料

2.在編譯階段分配記憶體

3.類內宣告,類外初始化

靜態成員函式:

1.所有成員共享乙個函式

2.靜態成員函式只能訪問靜態成員變數

class

person

int person::m_a =

100;

//類外初始化

void

test()

cout

靜態成員變數不屬於某乙個物件,所有物件共享乙個資料

靜態成員變數處於私有時,也無法外部訪問

class

person

static

int m_a;

int m_b;

}void

test1()

靜態成員函式也是有訪問許可權的

C 學習筆記 9

static 在c語言裡面 1 如果是靜態的全域性變數,就意味著這個變數只在這個.c檔案裡有效 2 靜態的本地變數具有持久儲存的作用,static的本地變數就是全域性變數,它就是放在全域性變數那個地方的 3 靜態的函式意味著只能在這個.c裡面訪問,在.c以外的是不能訪問的 在c static 的成員...

C 學習筆記9 模板

當編譯器遇到乙個模板定義時,它並不生成 只有當我們例項化出模板的乙個特定版本時,編譯器才會生成 普通的函式,函式的宣告和定義我們可以放在不同檔案中。對於模板則不同,為了生成乙個例項化版本,編譯器需要掌握函式模板或類模板成員函式的定義。因此,模板的標頭檔案通常既有包括宣告也包括定義。template ...

C語言學習筆記9

從程式流程的角度來看,程式可以分為三種基本結構,即順序結構 分支結構 迴圈結構。這三種基本結構可以組成所有的各種複雜程式。c語言程式設計教程 中會這樣來區分這結構,下面來說說分支結構程式和迴圈結構程式 1 分支結構程式 關係運算子和表示式 在程式中經常需要比較兩個量的大小關係,以決定程式下一步的工作...