1、標示符必須以字母或下劃線開頭,不能以數字開頭。
2、int a=7和int a=07 不同,前者是十進制,後者是8進制。
3、double a=b=99.99;//非法,同一定義語句中不同變量的初始化應該分別進行。
4、內置數據類型的變量在函數體外定義初始化爲0,在函數體內定義不初始化。
5、只有當extern 聲明位於函數外部時,纔可以含有初始化式。
extern std::string name("abc");一定是在函數體外,作全局變量。
6、const常量必須初始化。
7、非const變量:
//file1.c int count; //file2.c extern int count; ++count;
8、const變量:在全局作用域聲明的const的變量是定義該對象的文件的局部變量。此變量只存在於那個文件中,不能被其他文件訪問。
通過指定const 變量爲extern ,就可以在整個程序中訪問const 對象:
//file1.c extern const int bufSize=123; //file2.c extern const int bufSize; for(int i=0;i<bufSize;i++)……
9、引用必須用與該引用同類型的對象初始化,但是唯獨const引用可以初始化右值。
int &refva1;//error:a reference must be initialized int &refva2=10;//error:initializer must be an object const int &refva3=123;//right const int ival=1; const int &refva4=ival;
const 引用是對const 的引用。
10、定義類時,通常先定義該類的接口,即該類所提供的操作。通過這些操作,可以決定該類完成其功能所需要的數據,以及是否需要定義一些函數來支持該類的實現。
11、編程新手經常會忘記類定義後面的分號,這是個很普遍的錯誤。
12、用class 和struct 關鍵字定義類的唯一差別在於默認訪問級別:默認情況下,struct的成員爲public,而class 的成員爲private.
13、頭文件中不能包含變量和函數的定義,但是const 對象和inline函數可以定義。
extern int ival=10;//定義 double fica;//定義,因爲沒有extern
如果const變量不是用常量表達式初始化,那麼他就不應該在頭文件中定義。相反,和其他的變量一樣,該const變量應該在一個源文件中定義並初始化。應在頭文件中爲它添加extern聲明,以使其能被多個文件共享。
14、頭文件保護符:防止頭文件被多次重複包含
#ifndef SHA #define SHA 頭文件的實體內容 #endif
15、在頭文件必須總是使用完全限定的標準庫名字,即不能使用using namespace std
16、從標準庫輸入讀取string :讀取並忽略開頭所有的空白字符,讀取字符直至再次遇到空白字符,讀取終止。
如果輸入爲“ Hello World ”,則存入的字符串爲“Hello”
17、getline函數:getline(cin,str)從輸入流讀入數據到str,但不包括換行符,可以包括空白字符,這與cin>>str不同。getline會丟棄最後的換行符,因此cout<<str時需要自己添加endl;
18、
#include <iostream> #include <string> using namespace std; int main() { string word; while(cin>>word) cout<<word; system("pause"); return 0; }
string對象在內存裏的數據爲"1\0" "2\0" "3\0"
string.size()不將'\0'字符計算在內。
19、string.size()的返回值是string::size_type類型,任何存儲string的size操作結果的變量必須爲string::size_type類型。特別重要的是,不要把size的返回值賦給一個int變量。
20、+連接操作符左右必須有一個string類型,不能全部是字面值。
21、cctype頭文件裏的函數可以判斷一個字符是字母、數字、空白字符、標點符號等
22、