1. 程式人生 > 其它 >輕鬆瞭解C++與C語言的不同之處

輕鬆瞭解C++與C語言的不同之處

技術標籤: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*