1.c++中類的不同儲存區的物件的初始值
class test;
1class
test211
intgetj()
1215 };
1.在堆上建立物件時,成員變數初始值為隨機值
test *p = new test;
2.在棧上建立物件時,成員變數初始值為隨機值
test t;
3.在靜態儲存區建立物件時,成員變數初始為0
全部變數:test t;
靜態變數 static test t;
2.c++類中const問題
const物件只能呼叫const成員函式,const成員函式也只能呼叫const成員函式,類成員中const成員是唯讀變數,可以通過修改指標指向的值來修改
3.類中成員函式與物件的關係
類的每個物件都擁有一套自己的成員變數,但是成員函式僅有一套,所有的物件共用這一套函式,函式被不同物件呼叫的區別在於類中提供了乙個this指標,該指標指向特定的物件
4.拷貝建構函式中的const 物件為何直接呼叫成員private變數?
1class
test25
6 test(const test&t)
7
我們都知道私有成員是可以通過成員函式來使用,拷貝建構函式是特殊的成員函式,所以可以直接使用privete成員
5.類中靜態變數
公有靜態變數可以被類名和物件名直接呼叫
私有靜態變數只能通過物件名呼叫
靜態變數只能在類外初始化,因為靜態變數不屬於任何乙個物件
6.靜態成員函式與普通成員函式的區別
靜態成員函式中沒有this指標
靜態成員函式只能訪問靜態成員函式和靜態變數(類似於const)
公有靜態成員函式可以通過類名直接呼叫,也可以通過物件名(不分public和private),普通成員函式只能通過物件名呼叫,因為需要與對應的this指標相匹配
7.函式過載
函式名和函式引數是用來確定函式的,僅靠函式名不可以,且過載函式必須在同一作用域
靜態函式可以和普通函式構成過載(同一作用域)
類中也可以過載函式(建構函式)
相同的引數,不同的順序也能發生過載
1double fun(int i,doublej)2
56double fun(double j,inti)7
函式返回值不能做過載依據
形參中存在const不能過載
double fun(constint i,double
j);double fun(int i,double j);
8 彙編**與源**
現代編譯器會自動進行優化,導致原始碼的二進位制**被優化後無法區別,如前置++和後置++ ,所有無法從彙編**獲取程式原始碼
9 隱式型別轉換
short 和 char 型做運算得到的結果為 int型,而非直觀上的short型,因為4位元組整型運算更加高效
10 轉換建構函式
1class
test25
6 test(int
i){}
7 }
如果存在如下**
test t;
t=5;
此時就會呼叫test(int i)這個函式**換建構函式),等價於t=test(5), 類似於將int 型別轉換為test型別
可以在轉換建構函式前新增 explicit 關鍵字來阻止編譯器自動隱式轉換
注:轉換建構函式只有乙個引數,且該引數型別為其他型別(不能是類本身型別)
11 型別轉換函式
類中的成員函式 operator type() ,type 為不同於類型別
與轉換建構函式類似
呼叫方式:隱式呼叫
12 子類中可以定義父類中的同名成員,但子類成員會隱藏(不等於沒有)父類的成員,如果需要呼叫父類成員變數,需要加上父類的作用域分辨符
13 建構函式內部是不會發生多型,在建構函式執行時,虛函式表指標未被正確初始化,只會呼叫當前類中的版本
析構函式內部也不可能發生多型行為,在析構函式執行時,虛函式表指標已經被摧毀,只會呼叫當前類中的版本
建構函式不能成為虛函式,因為虛函式指標未被正確初始化
析構函式可以發生多型,既可以成為虛函式
14 函式模板建立過程中會有兩個步驟
1.對模板本身進行編譯
2.對替換後的**進行編譯
15 類模板特化只是模板的分開實現,本質上還是同乙個類模板
16 重定義是乙個類模板和乙個新類(或者兩個類模板),使用的時候需要考慮如何選擇的問題
特化是以統一的方式使用類模板和特化類,編譯器會優先選擇特化類
17 智慧型指標 #include
auto_ptr:乙個指標物件只能指向一片位址,且某一片位址只能被乙個auto_ptr指標所指向,一旦發生賦值操作,記憶體所有權就會轉換
share_ptr指標變數可以多個共享一片記憶體
unique_ptr與auto_ptr類似,但是不能轉換記憶體所有權
qt中的智慧型指標:
-------qpointer
優點:可以多個指標指向同一片記憶體,但是一旦記憶體被釋放,所有的指標全為null,
缺點:析構時不會自動銷毀所指向的記憶體
-------qsharepointer
它屬於引用計數型指標,只有當引用計數為0時才會銷毀物件
18 關鍵字 typeid()
當引數為型別名時,則返回型別名
當引數為變數時:
變數型別為普通型別時,則返回靜態型別
變數型別為類型別,且不含虛函式時,則返回靜態型別
變數型別為類型別,且含有虛函式時,則返回動態型別
19 編譯器選擇函式順序
函式過載->函式模板->變參函式
ps:持續更新
函式高階小結
目錄十 一 匿名函式 十二 面向過程程式設計 python從入門到放棄完整教程目錄 def f1 x 10 def f2 print x 10 x 1000 f1 10 print x 1000def f1 x 10 def f2 print x 10 return f2 f f1 f2 f f2 ...
Python高階小結
目錄 三 資料型別內建方法 3.2 字串型別內建方法 3.3 列表型別內建方法 3.4 元祖型別內建方法 3.5 字典型別內建方法 3.6 集合型別內建方法 3.7 布林型別 四 資料型別分類 python從入門到放棄完整教程目錄 萬能捕捉異常公式 try 邏輯 1 0except exceptio...
函式高階小結
def f1 x 10 def f2 print x 10 x 1000 f1 10 print x 1000把函式和變數一起打包拿出去了,內部函式包含對外部作用於而非全域性作用域的引用 def f1 x def f2 print x 10 return f2 f3 f1 10 f2 f3 f2 1...