C++ Primer 札記(一)


左值就是址值,右值就是數據值。

佔位符

int (*matrix)[10]
注意*matrix 周圍的括號是必需的因爲下標操作符的優先級較高下列聲明
int *matrix[ 10 ];
將matrix 聲明成一個含有10 個指向int 的指針的數組

建議把inline 函數的定義放到頭文件中

鏈接指示符extern "C"

引用必須被初始化爲指向一個對象一旦初始化了它就不能再
指向其他對象指針可以指向一系列不同的對象也可以什麼都不指向

對於不可尋址的值如文字常量以及不同類型的對象編譯器爲了實現引用必鬚生成一個臨時對象引用實際上指向該對象但用戶不能訪問它。


函數指針與函數的區別

在外圍域中的聲明被嵌套域中的同名聲明所隱藏

關鍵字extern 也可以在函數聲明中指定惟一的影響是將該聲明的隱式屬性在其他地方定義變爲顯式的

查詢系統的C++實現參考手冊瞭解怎樣從一個普通的C++頭文件創建預編譯頭文件


extern int ival = 10;
double fica_rate;
extern void dummy() {}
雖然ival 是用extern 聲明的但是它的顯式初始化使得它實際上是個定義類似的情況
雖然dummy()顯式地聲明爲extern 但是空花括號代表該函數的定義儘管fica_rate 沒有被
顯式地初始化但是因爲缺少extern 因而也被視爲C++中實際的定義這些定義如果在同
一程序的兩個或多個文件中被包含就會產生重複定義的編譯錯誤

當一個自動變量的地址被存儲在一個生命期長於它的指針時該指針被稱爲空懸指針dangling pointer


對同一內存區應用了兩次delete 表達式這通常發生在兩個指針指向同一個動態分配對象的時候這是一個很難踉蹤的問題若多個指針指向同一個對象當通過某一個指針釋放了該對象時就會發生這樣的情況此時該對象的內存被返回給空閒存儲區然後又被分配給某個別的對象接着指向舊對象的第二個指針被釋放新對象也就跟着消失了


在這種情況下用字符串操作assign()對原有的字符串對象重新賦值比刪除原有的字符率對象並重新分配第二個字符串對象更爲有效

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章