1、
標頭檔案的內容
1.1函式的宣告:int fun(); void max();
1.2全域性資料的宣告:extern int n;
1.3型別宣告:class a{};
1.4全域性常量定義:const float pi = 3.1415926;
1.5內聯函式定義:inline void fn();
1.6模板宣告和定義:templateclass a ;
1.7名空間定義:namespace n{};
1.8型別定義:enum color{}; class a{};
1.9預編譯指令:#include
1.10注釋://2023年
2月22日
8:44:39
2、
static的標示含義
在程式中,有的函式是為了檔案中的其他函式服務的,並不對外提供服務,這些函式應
宣告為靜態的(static)表示區域性於程式檔案。同樣有的變數只為本檔案服務也不是全域性資料,應標為static,這些函式和變數稱為靜態全域性函式和靜態全域性變數,它只在本檔案範圍內可見,在其他程式檔案中不可見。
3、
介面標頭檔案(header file as inte***ce)
標頭檔案更重要的作用是在設計階段(相對於程式設計階段)規定介面,也就是通過標頭檔案可以明白地看出某個程式檔案提供了宣告服務,這種標頭檔案稱為使用者介面。例如:程式檔案ad.cpp所提供的使用者介面為ad.h。
4、
不能過載的操作符
「::」,「.」,「.*」,「?:」,sizeof,typedef,new,delete,static_cast,dynamic_cast,const_cast,reinterpret_cast。
5、
操作符過載
操作符過載是針對自定義型別的性質,使得操作符過載專門用於類物件的操作。
6、
增量操作
乙個整型變數的增量操作的結果與變數是一致的,而且前增量的操作的結果是左值,操作可以連貫,而後增量操作的結果是增量之前的變數值,它是臨時變數,當表示式計算工作完成後,該臨時變數隨即消失,所以變數最終值與後增量結果是錯位的。
7、
匿名物件
建立物件時如果不給出物件名,也就是說直接以類名呼叫建構函式,則產生乙個無名物件,無名物件經常在引數傳遞時用到。例如:
cout << date(2011, 2, 22) << endl;
date(2011, 2, 22)是乙個物件,該物件在做了<< 操作後便煙消雲散了,所以這種物件一般用在建立後不需要反覆使用的場合。
8、
常量是不能做左值的
對乙個已經建立了的常量,在賦給新值是沒有道理的,引用只能在建立的時候進行變數實體的對應,對乙個已經存在的引用來說賦值語句並不代表再次與變數對應。也就是說在建構函式體中是不能完全對常量成員和引用成員進行初始化的。
9、
成員物件以其在類中宣告的順序構造。
10、
拷貝建構函式名也是類名,它是建構函式的過載,一旦自定義了拷貝建構函式,預設的拷貝建構函式就不再起作用了。拷貝建構函式的引數必須是類物件的常量的引用:
person(const person & s);
因為物件複製的語義本身尚處於當前定義當中,引數傳遞若為傳值形式,則物件複製操作的呼叫的拷貝建構函式在**呢?所以只能是引用或者是指標。但是指標引數將影響複製的語法:
person p2(*p1);//或者persion p1 = * p2;
這種語法並不優雅,所以用物件的引用。
const限定符有兩個作用,乙個是防止被複製的物件」變樣」,另乙個是擴大使用範圍。有一條程式設計經驗,就是自定義物件作為引數傳遞,能用引用就盡量使用引用,能用常量引用的盡量使用常量引用。因為被複製的物件也有可能是常物件。
如果拷貝物件是常物件,而拷貝建構函式的引數不是常量引用,也就是說,置乙個常物件可能被修改的危險之中,這是編譯器無論如何也要奮不顧身地報告錯誤的。
在自定義拷貝建構函式之前,我們進行拷貝物件構造時,都是在用預設的拷貝建構函式,因為那個時候的物件本體與物件實體是一致的。所以,自定義拷貝建構函式在物件本體與物件實體不一致時,便是需要的,否則無此必要。當物件本體與物件實體一致時,起拷貝構造稱為淺拷貝,當物件本體和物件實體不一致時,其拷貝稱為深拷貝。深拷貝需要動態記憶體的分配工作。
錢能C 語言讀書筆記(二)
1 有記憶體申請,也就有記憶體釋放。一般來說,需要定義拷貝建構函式的類,也需要析構函式,不需要拷貝建構函式的類,也無須定義析構函式。所以析構函式與拷貝建構函式是成對出項的。因為析構函式是沒有引數的所以函式形式是唯一的,沒有過載的析構函式。析構函式在物件的生命週期行將結束的瞬時,由系統自動呼叫。因此,...
錢能C 語言讀書筆記(六)虛函式的限制
1 只有類成員函式才能宣告為虛函式。這是因為虛函式僅適用於有繼承體系的類物件,所以普通函式不能宣告為虛函式。2 靜態成員函式不能是虛函式。因為靜態成員函式不受物件的 即使形式上的 實際上也沒有任何物件的資訊,只有類的資訊 void fn base x 操作不受物件 也就失去了多型的條件。因為編譯是在...
《小狗錢錢》讀書筆記
1 成功的人之所以成功,就是因為他們一直夢想著自己成功的那一天,不停地想象著自己實現了理想時的情形。2 我們的支出永遠是隨著我們的收入而增長的。3 你必須設想自己已經擁有了這些東西,這樣你的乙個小願望才會變成一種強烈的渴望,你想象得越多,你的願望就越強烈。4 第一 為別人解決乙個難題,那麼你就能賺到...