輕鬆瞭解C++與C語言的不同之處
一、C++介紹
貝爾實驗室本賈尼·斯特勞斯特魯普,於1979年在分析linux系統分佈核心流量分析時,希望有一個更加模組化的工具,於是他為C語言增加了類的機制(面向物件),於1983年完成了C++的第一個版本。
特點
1、C++完全相容C語言的所有內容
2、支援面向物件的程式設計思想(抽象、封裝、繼承、多型)
3、支援函式、運算子過載
4、支援泛型程式設計、模板技術
5、支援異常處理機制
6、型別檢查更嚴格
二、第一個C++程式
1、副檔名
.cpp .cc .C .cxx
2、標頭檔案
#include <iostream> C++中把檔案操作抽象成了類
#include <stdio.h> 可以繼續使用
#include <cstdio> 建議這樣使用,裡面刪除了一些可能引起衝突的巨集
3、增加了名字空間
using namespace std;
4、輸入/輸出
cout << 輸出資料
cin >> 輸入資料
cout/cin不需要對變數取地址,也不需要佔位符,因為它們可以自動識別型別
scanf/printf/sscanf/sprintf可以繼續使用。
注意:scanf和printf是C標準庫函式,而cin/cout是C++標準庫的類物件,被定義在std名字空間中
5、編譯器
g++ file.cpp -> a.out
大多數Linux系統都需要額外安裝,Ubuntu系統安裝命令:
sudo apt-get update
sudo apt-get install g++
gcc編譯器也可以繼續使用,需要額外加引數:gcc -xc++ flie.cpp -lstdc++
三、C++的資料型別
1、布林型別
C++中有真正的布林型別,不需要新增標頭檔案,bool true false可以直接使用
2、結構、聯合
1、不需要在typedef,在定義結構、聯合變數時可以省略struct union關鍵字。
2、成員可以是函式,成員函式中可以直接訪問成員變數,而不再需要. ->
3、有四個隱藏的成員函式(構造、析構、拷貝構造、複製構造)。
4、可以對成員的訪問許可權進行管理,public/protected/private。
5、結構還可以被繼承
3、列舉
1、不再需要typedef,在定義列舉變數時可以省略enum關鍵字
2、使用方法與C語言基本一致,不能與整形資料混用
4、void*
1、在C語言中void*可以與任意型別的指標自動轉換(萬能指標)。
void* p = NULL;
int* p1 = p;
p = p1;
2、C++中void*不能再直接給其它型別的指標變數賦值,只能強制型別轉換後才能賦值,但其它型別的指標可以直接給void*型別賦值。
void* p = NULL;
int* p1 = p; //error
3、C++為什麼要修改void*
為了安全,另外C++可以自動識別型別,所以對萬能指標的需求不再那麼強烈
4、C++中的字串
1、C++中把字串封裝成了string類,實現在string標頭檔案中,但是已經被iostream包含,定義在std名字空間中。
2、常見的字串操作也不在需要函式,可以使用運算子
= strcpy
== stcmp
+= strcat
size() strlen
3、計算字串長度使用size成員函式
4、也可以與轉換成C語言中的char*
c_str() const char*
data() char*