標籤:
1.聲明和定義
聲明是相編譯器介紹名字-標識符,它告訴編譯器“這個變數或函數在某處可以找到,它的模樣”。而定義是說:“在這裡建立變數”或“這裡建立函數”,為變數和函數分配儲存的空間。
2.語言的翻譯
任何電腦語言都要從某種人們容易理解的形式(來源程式)轉換成為機器理解和執行的形式(機器指令),編譯器和解譯器是兩種翻譯工具。
3.連結的順序
因為連結器按照順序尋找檔案,所以,如果使用者自訂與庫函數相同名稱的函數,把帶有這個函數的檔案插入到庫函數檔案名稱列表之前,就能使用自訂的函數替代庫函數。這有可能是個bug,C++名字空間禁止這樣。當建立一個C/C++可執行程式時,連結器會秘密的鏈家某些模組。其中之一就是啟動模組,它包含了對程式初始化的常式,初始化常式是C/C++程式執行時必須首先執行的程式,它主要建立堆棧並初始化程式中的某些變數。
標準庫中只需要添加標頭檔就行,應為庫檔案總是能找到的。如果使用附件的庫檔案,則必須把對應的檔案添加都連結器的尋找檔案清單中。
4.整個C的庫預設的包含在C++標準庫中。
5.iostream類可以從檔案、標準的輸入輸出裝置(通常指控制台,但也可重新導向到檔案和裝置)讀取和寫入資料。
6.操作符重載,<<和cout對象在一起就是“發送到”,和整數在一起就是“左移”。
7.名字空間 C語言的所有函數和變數名都在同一個空間裡,大的工程,幾個人共同開發是,命名得非常小心。C++通過namespace關鍵字解決了這個問題,所有的C++標準庫的名字都分裝在同一個空間std中。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1.wchar_t和char16_t、char32_t區別:後兩個是最新的標準添加。
#include <iostream> int main(){ wchar_t ch = ‘高‘; //寬字元 char16_t和char32_t是C11新添,本機不支援 std::cout << ch << std::endl; return 0;}
2.Hello world!
#include <iostream>using namespace std; //範圍? int main(){ cout<<"Hello World!I am " <<8<<"Today!"<<endl; return 0;}
E:\myDocuments\GUN\C++>g++ Demo.cpp -o Demo.exe
E:\myDocuments\GUN\C++>Demo.exe
Hello World!I am 8Today!
E:\myDocuments\GUN\C++>
3.輸入輸出資料流:對於資料輸出有多重格式
#include <iostream>using namespace std; //範圍? int main(){ cout<<"A number in decimal " <<dec<<15<<endl; //十進位 dec<<15 cout<<"A number in octical " <<oct<<0x0F<<endl; //八進位 oct<<15 cout<<"A number in hexadecimal " <<hex<<15<<endl; //十六進位 hex<<15 cout<<"A float number " <<3.14159268<<endl; //多少精度? cout<<"Non-printing char(escape) " <<char(0x1B)<<endl; int number; cout<<"Enter a number "<<endl; cin >> number; //預設輸入的為十進位 cout<<"value in octical = 0" <<oct<<number<<endl; cout<<"value in hexadecical = 0x" <<hex<<number<<endl; return 0;}
E:\myDocuments\GUN\C++>Demo.exe
A number in decimal 15
A number in octical 17
A number in hexadecimal f
A float number 3.14159
Non-printing char(escape)
Enter a number
15
value in octical = 017
value in hexadecical = 0xf
E:\myDocuments\GUN\C++>
4.調用其他程式:標準C語言的system()函數,C/C++可以調用任何程式,system()在標頭檔cstdlib(從原來的stdlib而來)。
#include <cstdlib>using namespace std; //範圍? int main(){ // system("Hello");/*E:\myDocuments\GUN\C++>Demo.exe‘Hello‘ 不是內部或外部命令,也不是可啟動並執行程式或批次檔。E:\myDocuments\GUN\C++>*/ /* 功 能: 發出一個DOS命令 用 法: int system(char *command); */ system("dir"); return 0;}/*輸出:結果和直接在命令列下面輸入一個dir(列出當前目的下檔案)一樣的效果E:\myDocuments\GUN\C++>g++ Demo.cpp -o Demo.exeE:\myDocuments\GUN\C++>Demo.exe 磁碟機 E 中的卷是 DATA 卷的序號是 EC10-1C79 E:\myDocuments\GUN\C++ 的目錄2015-08-25 11:21 <DIR> .2015-08-25 11:21 <DIR> ..2015-08-25 10:41 496,719 a.exe2015-08-25 11:21 341 Demo.cpp2015-08-25 11:21 15,883 Demo.exe2015-08-21 09:52 111 GUN.bat 4 個檔案 513,054 位元組 2 個目錄 81,164,349,440 可用位元組E:\myDocuments\GUN\C++>dir --------直接輸出dir命令 磁碟機 E 中的卷是 DATA 卷的序號是 EC10-1C79 E:\myDocuments\GUN\C++ 的目錄2015-08-25 11:22 <DIR> .2015-08-25 11:22 <DIR> ..2015-08-25 11:21 341 Demo.cpp2015-08-25 11:21 15,883 Demo.exe2015-08-21 09:52 111 GUN.bat 3 個檔案 16,335 位元組 2 個目錄 81,164,349,440 可用位元組E:\myDocuments\GUN\C++>*/
C++編程思想