-
C++的歷史發展
帶類的C,1983正式取名C++,2011年發佈第三版C++標準C++11,包含核心語言的新機能、擴展C++標準程序庫。2014年公佈C++14。
-
C++的特點
兼容C,支持面向過程的程序設計,支持,面向對象的方法,支持泛型程序設計方法。
-
命名空間
避免命名衝突。
std是C++標準庫的命名空間(namespace)名。
using namespace std表示打開std命名空間。
-
C++字符集
大小寫英文字母:A~Z,a~z
數字0~9
特殊字符:
-
詞法記號
關鍵字:C++預定義的單詞
標識符:程序員聲明的單詞,它命名程序正文中的一些實體。
空白符:空格、製表符(tab鍵產生的字符)、垂直製表符、換行符、回車符和註釋的總稱。
-
標識符的構成規則
由大寫字母、小寫字母或下劃線開頭。
由數字、字母或下劃線組成。
大寫字母和小寫字母代表不同的標識符。
不能是C++關鍵字或操作符。
-
基本數據類型、常量、變量
整數類型、浮點數類型、字符類型、布爾類型
常量的值在整個程序運行期間不可改變。
基本整數類型:int
按符號分爲signed和unsigned;按照數據範圍分爲short、long、long long
字符類型char,實際上存儲的也是整數。
浮點數類型:float、double、long double
字符串類型:字符串常量
基本類型中沒有字符串變量。
採用字符數組存儲字符串(C風格的字符串)。
標準C++類庫中的String類(C++風格的字符串)。
-
各基本類型的取值範圍
浮點常量默認爲double型,後綴加f可以成爲float型。
-
C++轉義字符列表
-
C風格字符串常量
一對雙引號括起來的字符序列;
在內存中按串中字符的排列次序順序存放,每個字符佔一個字節;
在末尾添加 ‘\0’ 作爲結尾標記。
例如:“China”——>c h i n a \0
'a'——>a
"a"——>a \0
-
通過添加前綴可以改變字符常量或者字符串常量的類型,含義如下表:
-
C++語言中提供了多種初始化方式
int a = 0;
int a(0);
int a = {0};
int a{0};
其中使用大括號的初始化方式稱爲列表初始化,列表初始化時不允許信息的丟失,例如用double值初始化int變量時就會造成數據丟失。
-
符號常量
const 數據類型說明符 常量名=常量值
const float PI=3.1415926;
const double pi(3.14159);
符號常量在定義時一定要初始化,在程序中間不能改變其值。
-
逗號運算符
-
關係運算與關係表達式
關係運算的優先級爲:
關係表達式是一種最簡單的邏輯表達式,其結果類型爲 bool,值只能爲 true 或 false。
-
邏輯運算與邏輯表達式
優先級:
邏輯運算結果類型:bool,值只能爲 true 或 false
-
條件運算符與條件表達式
表達式1?表達式2:表達式3
表達式1 必須是 bool 類型,表達式2、3的類型可以不同,條件表達式的最終類型爲 2 和 3 中較高的類型。
條件運算符優先級高於賦值運算符,低於邏輯運算符
-
位運算
按位與(&);按位或(|);按位異或(^);移位(<<、>>)
左移運算(<<):左移後,低位補0,高位捨棄。
右移運算(>>);右移後,低位捨棄;高位:無符號數:補0,有符號數:補“符號位”。
-
數據類型的轉換——顯式轉換
顯式類型轉換的作用是將表達式的結果類型轉換爲類型說明符所指定的類型。
類型說明符(表達式)
(類型說明符)表達式
類型轉換操作符<類型說明符>(表達式)
類型轉換操作符可以是:const_cast、dynamic_cast、reinterpret_cast、static_cast
例如:int(z), (int)z, static_cast<int>(z)三者完全等價。
-
數據的輸入輸出
I/O流: 在C++中,將數據從一個對象到另一個對象的流動抽象爲“流”。流在使用前要被建立,使用後要被刪除。
數據的輸入與輸出是通過I/O流來實現的,cin和cout是預定義的流類對象。cin用來處理標準輸入,即鍵盤輸入。cout用來處理標準輸出,即屏幕輸出。
從流中獲取數據的操作稱爲提取操作,向流中添加數據的操作稱爲插入操作。
-
預定義的插入符和提取符
“<<”是預定義的插入符,作用在流類對象cout上便可以實現項標準輸出設備輸出。
cout << 表達式 << 表達式...
標準輸入是將提取符作用在流類對象cin上。
cin >> 表達式 >> 表達式...
提取符可以連續寫多個,每個後面跟一個表達式,該表達式通常是用於存放輸入值的變量。例如:
int a, b;
cin >> a >> b;
-
常用的I/O流類庫操縱符
操縱符名 含義
dec 數值數據採用十進制表示
hex 數值數據採用十六進制表示
oct 數值數據採用八進制表示
ws 提取空白符、
endl 插入換行符,並刷新流
ends 插入空字符
setsprecision(int) 設置浮點數的小數位數(包括小數點)
setw(int) 設置域寬
例如:cout << setw(5) << setprecision(3) << 3.1415;
-
switch語句
switch (表達式)
{ case 常量表達式 1:語句1
case 常量表達式 2:語句2
┆
case 常量表達式 n:語句n
default : 語句n+1
}
case分支可包含多個語句,且不用{ }。
表達式、判斷值都是int型或char型。
如果若干分支執行內容相同可共用一組語句。
-
while語句
while (表達式) 語句
-
for語句
for語句的另一種形式:範圍for語句:
for (聲明:表達式)
語句
-
自定義類型
類型別名:爲已有類型另外命名
typedef 已有類型名 新類型名錶
例如:
typedef double Area, Volume;
typedef int Natural;
Natural i1,i2;
Area a;
Volume v;
using 新類型名 = 已有類型名;
using Area = double;
using Volume = double;
-
枚舉類型
將全部可取值一一列舉出來。
enum 枚舉類型名 {變量值列表};
enum Weekday {SUN, MON, TUE, WED, THU, FRI, SAT};
默認情況下
SUN=0,MON=1,TUE=2,......,SAT=6
-
C++包含兩種枚舉類型:
不限定作用域枚舉類型:enum 枚舉類型名 {變量值列表};
限定作用域的enum類。
不限定作用域枚舉類型說明: 枚舉元素是常量,不能對它們賦值。
enum Weekday {SUN, MON, TUE, WED, THU, FRI, SAT};
不能寫賦值表達式:SUN = 0
枚舉元素具有默認值,它們依次爲: 0,1,2,......。
也可以在聲明時另行指定枚舉元素的值,如:
enum Weekday{SUN=7,MON=1,TUE,WED, THU,FRI,SAT};
枚舉值可以進行關係運算。
整數值不能直接賦給枚舉變量,如需要將整數賦值給枚舉變量,應進行強制類型轉換。
枚舉值可以賦給整型變量。
-
auto類型與decltype類型
auto:編譯器通過初始值自動推斷變量的類型。
例如:auto val = val1 + val2;
如果val1+val2是int類型,則val是int類型;
如果val1+val2是double類型,則val是double類型。
decltype:定義一個變量與某一表達式的類型相同,但並不用該表達式初始化變量
例如:decltype(i) j = 2