C++ 簡介
C++ 是一種靜態類型的、編譯式的、通用的、大小寫敏感的、不規則的編程語言,支持過程化編程、面向對象編程和泛型編程。
C++ 被認為是一種中級語言,它綜合了高級語言和低級語言的特點。
C++ 是由 Bjarne Stroustrup 於 1979 年在新澤西州美利山貝爾實驗室開始設計開發的。C++ 進一步擴充和完善了 C 語言,最初命名為帶類的C,后來在 1983 年更名為 C++。
C++ 是 C 的一個超集,事實上,任何合法的 C 程序都是合法的 C++ 程序。
注意:使用靜態類型的編程語言是在編譯時執行類型檢查,而不是在運行時執行類型檢查。
面向對象程序設計
C++ 完全支持面向對象的程序設計,包括面向對象開發的四大特性:
- 封裝
- 抽象
- 繼承
- 多態
標准庫
標准的 C++ 由三個重要部分組成:
- 核心語言,提供了所有構件塊,包括變量、數據類型和常量,等等。
- C++ 標准庫,提供了大量的函數,用於操作文件、字符串等。
- 標准模板庫(STL),提供了大量的方法,用於操作數據結構等。
C和C++的聯系
C++ 是在C語言的基礎上擴展的,C語言的很多語法在 C++ 中依然廣泛使用,例如:
C++ 仍然使用 char、short、int、long、float、double 等基本數據類型;
C++ 仍然使用 if...else、while、for、switch、break 等分支或循環結構;
C++ 仍然使用 +、-、*、/、%、++、--、<<、>> 等運算符;
C++ 仍然使用 typedef、#define、enum、struct 等;
C++ 仍然使用C語言中經典的指針(Pointer),並且使用范圍有增無減,甚至不可或缺。
C++與C不兼容之處
C的大部分代碼在C++上都能應用,而C++的代碼在C上不能應用。(記住是大部分,不是所有)
C++是C語言的超集,雖然C++兼容C,但是C++中也有與C語言中不兼容的地方。
1、變量聲明的位置C中變量聲明和代碼是分開的,必須在函數開始處聲明;
C++中,變量可以在任意處聲明,只要保證先聲名后使用的原則就可以。
2、struct結構體方面用struct定義變量
struct mystruct{ int i;float x};
在c中聲明struct變量要這么寫:struct mystruct a;
在C++中前面不用加struct:mystruct a;
一種兼容的用法是:
typedef struct _mystruct{int i;float x;} mystruct;
然后用mystruct 定義變量。枚舉型(enum),聯合體類型(union)也是同樣。
在C++中,struct結構體支持成員函數的定義,C中不行。另外要注意的是,C++中成員函數的默認訪問說明符為public,這一點和類不同,類的默認訪問說明符為private.
3、bool類型值
C++中有bool(或boolean類型);C中可沒有這樣的bool類型,均為數值類型!需要注意的是真為非零(如:1,52,-5,-2等),假的數值為0。
4、 賦值C語言中的賦值只有一中即:=;
C++中除了使用=外,還可以使用()。例如:int x(5);就等於: int x=5;我想這種寫法是給C++中對象初始化時初始化屬性是對象時使用的,那么對於基本類型也可以使用了。
5、函數C語言中函數沒有參數默認值,在C++中函數有參數默認值的概念,注意參數默認值與函數重載的區別。
C語言中函數的定義又兩種形式,經典形式和標准形式,C++中只支持標准形式。
標准形式:int string(int x,float y){......}
經典形式: int string(x,y)int x;float y;{......}
C++的函數必須先聲名原型或定義才能使用,因為C++是強數據類型語言,在C語言中,未聲名和定義函數之前調用函數是允許的.
6、運算符&和關鍵字const&運算符最基本的含義是取地址,C和C++中都支持這一語法。但在C++中&還可以表示引用。有了引用的概念后函數調用可以作為左值。例如:
int &rtux()......rtux()=5;
以上表達式在C++中完全正確,但在C語言中是非法的。
const關鍵字要注意一點不同的就是在C++的類函數中,函數可以聲名是可以用const,表示這個函數沒有改變類中的任何屬性。如:void unchange()const;C不能有這樣的生明。
7、extern說明符在C語言的某些版本中,可以在程序中多次使用一個全局變量而無需使用extern說明符。但在C++中除定義全局變量外,在其他模塊使用應先用extern生明。
8、void指針在C語言中void指針可以賦給任何類型的指針,但在C++中,卻不行,但可以先進行強制數據類型轉換,在賦值。
C++ bool數據類型
布爾類型(bool)是C++新增的一種基本數據類型。在標准的C語言中並未定義bool類型,如果需要使用bool類型,程序員可以通過宏定義來自定義一個bool類型,定義語句如下:
1 #define bool int 2 #define false 0 3 #define true 1
也就是將int型定義為bool型,將int型的0和1兩個值分別定義為bool類型的兩個值true和false。但是在C++中則不需要這么麻煩,C++中對bool類型已經做出了定義。
bool類型是C++語言基本數據結構之一,在80x86處理器上編譯器gcc 4.8.1和Visual C++ 2012給bool類型變量分配1個字節長度。
bool類型取值范圍僅有兩個值:true和false。在做邏輯運算時,默認非零即為ture。
定義bool類型變量也與其他基本數據類型變量的定義類似,如下所示:
bool flag = true;
C++ 的輸入輸出方式
【示例】
1 #include <iostream> 2 #include <stdlib.h> 3 using namespace std; 4 int main(void) 5 { 6 cout<<"請輸入一個整數:"<<endl; 7 int x=0; 8 cin>>x; 9 cout<<oct<<x<<endl;//將該整數轉變成8進制 10 cout<<dec<<x<<endl;//將該整數轉變成10進制 11 cout<<hex<<x<<endl;//將該整數轉變成16進制 12 13 cout<<"請輸入一個布爾值(0/1):"<<endl; 14 bool y=false; 15 cin>>y; 16 cout<<boolalpha<<y<<endl;//boolalpha表示的是布爾值 17 system("pause"); 18 return 0; 19 }