貝爾實驗室本賈尼·斯特勞斯特魯普,於2023年在分析linux系統分布核心流量分析時,希望有乙個更加模組化的工具,於是他為c語言增加了類的機制(物件導向),於2023年完成了c++的第乙個版本。
1、c++完全相容c語言的所有內容
2、支援物件導向的程式設計思想(抽象、封裝、繼承、多型)
3、支援函式、運算子過載
4、支援泛型程式設計、模板技術
5、支援異常處理機制
6、型別檢查更嚴格
.cpp .cc .c .cxx
#include c++中把檔案操作抽象成了類
#include 可以繼續使用
#include 建議這樣使用,裡面刪除了一些可能引起衝突的巨集
using namespace std;
cout << 輸出資料
cin >> 輸入資料
cout/cin不需要對變數取位址,也不需要佔位符,因為它們可以自動識別型別
scanf/printf/sscanf/sprintf可以繼續使用。
注意:scanf和printf是c標準庫函式,而cin/cout是c++標準庫的類物件,被定義在std名字空間中
g++ file.cpp -> a.out
大多數linux系統都需要額外安裝,ubuntu系統安裝命令:
sudo apt-get update
sudo apt-get install g++
gcc編譯器也可以繼續使用,需要額外加引數:gcc -xc++ flie.cpp -lstdc++
c++中有真正的布林型別,不需要新增標頭檔案,bool true false可以直接使用
1、不需要在typedef,在定義結構、聯合變數時可以省略struct union關鍵字。
2、成員可以是函式,成員函式中可以直接訪問成員變數,而不再需要. ->
3、有四個隱藏的成員函式(構造、析構、拷貝構造、複製構造)。
4、可以對成員的訪問許可權進行管理,public/protected/private。
5、結構還可以被繼承
1、不再需要typedef,在定義列舉變數時可以省略enum關鍵字
2、使用方法與c語言基本一致,不能與整形資料混用
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*
C 與C語言的不同之處
本文介紹了c 與c語言的不同之處。常見區別 庫函式 c stdio.h c iostream 輸入 c scanf c cin 輸出 c printf c cout 動態開闢 c malloc c new 釋放 c free c delete 以上是比較常見之處。下面是我在學習c 中認識到的內容 內...
C語言與C 的不同之處總結
一 c語言認為char屬於int,char型的數值計算實質是ascii碼 二 c語言沒有布林型別,除0位假外,其餘均為真 三 c語言沒有string型別 在c語言中並沒有char型別的常量 但是在c 中卻有,字元常量都是char型別 其實是用int表示char,字元型與整型相比只是更加節省記憶體。有...
C語言和C 中const的不同之處
includeint main 檔案中 include demo.cpp 可不用包含 int main 檔案中 pp檔案中 include demo.cpp 必須包含 int main pp檔案中 const int a 10 不行需要寫 extern const int a 10 include ...