讀《c++ primer 第5版》(c++11標準),一些記錄
1. 變數初始化、列表初始化
c++語言定義了好幾種初始化形式,如:
①int units_sold = 0;
②int units_sold = ;
③int units_sold;
④int units_sold(0);
四種形式等價,但②和③不執行強制型別轉換,如:
long double ld = 3.1415926536
int a, b = ;// a和b編譯會報錯
2. 函式內部使用全域性作用域 (p44)
如 int reused = 42;
int main()
3. 引用(reference)
定義:為已有物件起另乙個名字,它不是乙個物件,用&d的形式
注:①必須賦初值 如:
int ival = 1024;
int &refval = ival;// refval即ival,他倆繫結(bind)在一起,是乙個東西
//因此
refval = 2; // 即ival = 2;
注:②可以連續引用 如:
int &refval3 = refval;// 即refval3也是ival
4. 指向指標的引用(p52) 如:
int i = 42;
int *p;
int *&r = p; // r是指標p的引用
//因此
r = &i;// 即指標p賦值為&i
5. 常量引用(p55)
常量的引用會引入臨時變數,如:
double dval = 3.14;
const int &ri = dval;// 正確
會引入:
const int temp = dval;
const int &ri = temp;
6. constexpr 變數(p59)
c++11新加,如果認定變數為乙個常量,就用constexpr宣告,如:
constexpr int mf = 20;
注意:constexpr無法修飾指標裡的值,如:
constexpr int *q = nullptr;// q為常量指標
7. string
①宣告:
string s1;// 空string
string s2(s1); 等價於 string s2 = s1;
string s4(n, 'c'); // n個c
②操作cin >> s
cout << s << endl
getline(cin, s) // 從cin讀取一行資料(不包含換行),賦值給s
s.empty()
s.size()
8. c++版本標頭檔案(與c對比)(p82)
a. c++版本 / c版本 ,其實內容都是一樣的
b. c++標頭檔案定義名字從屬於命名空間std
9. 範圍for(range for)語句(p83) 例:
string str("some string");
for (auto c : str) // 這裡auto是char
cout << c << endl;
C 新功能 命名引數
命名引數會潛在的改變編寫 的方式.這個新功能能使 更容易閱讀和理解.例如,看一下system.io命名空間中的file.copy 方法,它一般構建為 file.copy c mytestfile.txt c myotherfile.txt true 在這行 中,這個簡單的方法使用3個引數,但實際傳遞...
C 新功能 命名引數
命名引數會潛在的改變編寫 的方式.這個新功能能使 更容易閱讀和理解.例如,看一下system.io命名空間中的file.copy 方法,它一般構建為 file.copy c mytestfile.txt c myotherfile.txt true 在這行 中,這個簡單的方法使用3個引數,但實際傳遞...
c99的新功能
參考 在ansi的標準確立後,c語言的規範在一段時間內沒有大的變動,然而c 在自己的標準化建立過程中繼續發展壯大。標準修正案一 在1994年為c語言建立了乙個新標準,但是只修正了一些c89標準中的細節和增加更多更廣的國際字符集支援。不過,這個標準引出了1999年iso 9899 1999的發表。它通...