先開個博客在這裏,碰到問題隨時記下。ok!!!!
1,標準C++與C在一些方面的改進
主函數爲int類型,如果程序正常執行則返回0;
系統頭文件不帶後綴.h;
使用系統庫時使用命名空間std;
增加了字符串類型string;
2,常變量
const int a = 3;
變量的值在程序運行期間不能改變,並且在定義常變量時必須同時對它進行初始化,之後的值不能再改變。因此常變量又稱爲之都變量。
3,C++在運算時對所有的float類型數據都按double型數據處理。
4,自增運算符和自減運算符,只能用於變量,而不能用於常量或者表達式。結合方向“自右向左”。
i = 3; cout<<-i++<<endl; //輸出-3,等價於-(i++)
5,C++將賦值表達式作爲表達式的一種,使幅值操作不僅可以出現在賦值語句中,而且可以以表達式形式出現在其他語句中。
6,逗號運算符的所有運算符中級別最低的。
7,逗號表達式的求解過程是:先求解表達式1,再求解表達式2。整個逗號表達式的值是表達式2的值。
8,C++不能用cin語句把空格字符和回車換行符作爲字符輸入給字符變量,它們會直接被跳過。如果想將空格字符或回車換行符(或任何其他鍵盤上的字符)輸入給字符變量,可以用後面介紹的getchar()函數。P53
9,C++新增的邏輯性數據,布爾變量。bool定義:false(假)、true(真)。 在編譯系統處理邏輯型數據時,將false處理爲0,true處理爲1.
10,內置函數可以在聲明函數和定義函數時同時寫inline,也可以只在函數生命時加inline,而定義函數時不加inline。注意:內置函數不能包括複雜的控制語句,如循環語句和switch語句。P104
11,函數的重載:即對一個函數名重新賦予它新的含義,使一個函數名可以多用。“一物多用”。重載函數的參數個數、參數類型和參數順序三者中必須至少有一種不同。P106
12,函數模板:實際上是建立一個通用函數,其函數類型和形參類型不具體指定,用一個虛擬的類型來代表。這個通用函數就成爲函數模板。。。。凡事函數體相同的函數都可以用這個模板來代替,不必定義多個函數,只須在模板中定義一次即可。。。。它只適用於函數體相同、函數的參數個數相同而類型不同的情況。P107
定義函數模板的一般形式:
template <typename T>
或:
template <class T>
13,有默認參數的函數,指定默認值的參數必須放在形參表列中的最右端,否則出錯。。。在調用有默認參數的函數時,實參的個數可以與形參不同,實參未給定的從形參的默認值得到值。P109
14,一個函數不能既作爲重載函數,又作爲有默認參數的函數。P110
15,外部函數:extern聲明或者直接缺省默認爲外部函數。
內部函數(靜態函數):static只能被本文件中其他函數所調用。
16,在程序中往往依靠檢測'\0'的位置來判定字符串是否結束,而不是根據數組的長度來決定字符串的長度。P143
17,如果一個字符數組中包含一個以上'\0',則用cout輸出時遇到第1個'\0'時輸出就結束。P145
18,C++處理字符串提供了一種心得數據類型——字符串類型(string類型)。P149
19,引用聲明符
.1 區別引用聲明符&和地址運算符&。出現在聲明中的&是引用聲明符,其他情況下的&是地址運算符。
.2 引用不是一種獨立的數據類型。對引用只有聲明,沒有定義;既必須先定義一個變量,然後聲明對該變量建立一個引用(別名)。
.3 聲明一個引用時,必須同時使之初始化,即聲明它代表那一個變量。
.4 在聲明一個引用後,不能再使之作爲另外一個變量的引用。
.5 不能建立引用數組,不能建立引用的引用。
.6 引用並不開闢內存空間,它和被引用的變量指向同一片內存空間。
.7 以引用作爲形參,在虛實結合時建立變量的引用,使形參名作爲實參的“引用”,即形參成爲實參的引用。這是一種地址傳遞方式。P187
20,C++提供了較簡單而功能較強的運算符new和delete來取代malloc和free函數。
new 類型 [初值]
delete 指針變量
用new分配數組空間時不能指定初值。
21,面向對象程序設計有4個主要特點:抽象、封裝、繼承、多態。P223
21,如果在類的定義中既不指定private,也不指定public,則系統就默認爲是私有的。P232
22,指向對象成員函數的指針
定義:
數據類型名(類名::*指針變量名)(參數表列)
初始化:
指針變量名 = &類名::成員函數名;
注意:&C++一般都加上。不要問爲什麼,語法規定。P273
23,在每一個成員函數中都包含一個特殊的指針,這個指針的名字是固定的,稱爲this。它是指向本類對象的指針,它的值是當前被調用的成員函數所在的對象的起始地址。
24,常對象 P277
定義: 下面兩種方法等價的。
類名 const 對象名[(實參表)];
const 類名 對象名[(實參表)];
常成員函數:
返回類型 函數名([(形參表)]) const;
注意:
.1 常對象不能調用對象中的普通函數;
.2 常成員函數不能修改對象的數據成員。
常成員函數是常對象唯一的對外接口。。。。。
25,靜態成員函數 P292
注意:
.1 與靜態數據成員不同,靜態成員函數的作用不是爲了對象之間的溝通,而是爲了能處理靜態數據成員。
.2 靜態成員函數是類的一部分而不是對象的一部分,即靜態成員函數沒有this指針,由此決定了靜態成員函數不能訪問本類中的非靜態成員。這是靜態成員函數和非靜態成員函數的根本區別。
.3 注意第二條並不是絕對的。靜態成員函數只是不能進行默認訪問,因爲無法知道應該去找那個對象。如果一定要引用本類中的非靜態成員,應該加對象名和成員運算符"."。
26,const
.1 定義常對象
類名 const 對象名[ (實參表) ] 或者 const 類名 對象名[ (實參表) ]
常對象不能調用常對象中的普通成員函數和調用的常成員函數不能修改對象的數據成員,這兩點可以保證常對象中的數據成員的值絕對不會改變。
常對象的數據成員都是常數據成員!!!!
.2 常對象成員
其作用和用法與一般常變量相似,用關鍵字const來聲明常數據成員。常數據成員的值是不能改變的。
只能通過改造函數的參數初始化表對常數據成員進行初始化,任何其他函數都不能對常熟據稱有幅值。
.3 常成員函數
類型名 函數名(參數表名) const
在聲明函數和定義函數時都要有const關鍵字。
常成員函數只能引用本類中的數據成員(普通數據成員和const數據成員),不能修改它們的值。
常成員函數不能調用另一個非const成員函數。