1.命名空間。
c++標準庫 #include , 命名空間為 std
namespace 是c++中的關鍵字,用來定義乙個命名空間,語法格式為:
namespace name
name是命名空間的名字,它裡面可以包含變數、函式、類、typedef、#define 等,最後由包圍,
且命名空間可以巢狀。
以下是乙個例項
#include using namespace std;
namespace a
return 0;
}
3.register關鍵字
register關鍵字請求「編譯器」將區域性變數儲存於暫存器中,
c語言中無法取得register變數位址。
在c++中依然支援register關鍵字
1、c++編譯器有自己的優化方式,不使用register也可能做優化
2、c++中可以取得register變數的位址
c++編譯器發現程式中需要取register變數的位址時,register對變數的宣告變得無效。
4.變數檢測加強
c++中不允許定義多個同名的全域性變數
#include int a;
int a = 1;
int main()
用gcc編譯完全可以,但用g++編譯時編譯器會報錯
5.struct型別的加強
c語言的struct定義了一組變數的集合,c編譯器並不認為這是一種新的型別。
c++中的struct是乙個新型別的定義宣告。
c語言中 struct 定義了一組資料的集合,而不是一種新的資料型別,
所以在定義變數的時候需要在前面加上 struct 關鍵字進行修飾。
c++中 struct 定義了一種新的資料型別,可以直接用來定義變數。
#include using namespace std;
struct student;
int main()
; return 0;
}
6.型別和返回值
c中函式可以沒有返回引數型別,函式引數可以沒有資料型別,
沒有引數的函式可以接收任意個引數。
在c語言中
int f( );表示返回值為int,接受任意引數的函式
int f(void);表示返回值為int的無參函式
在c++中
int f( );和int f(void)具有相同的意義,都表示返回值為int的無參函式。
c++更加強調型別,任意的程式元素都必須顯示指明型別,都必須要有型別。
7.bool型別關鍵字
c++中的布林型別
c++在c語言的基本型別系統之上增加了bool
c++中的bool可取的值只有true和false
理論上bool只占用乙個位元組,
如果多個bool變數定義在一起,可能會各佔乙個bit,這取決於編譯器的實現。
true代表真值,編譯器內部用1來表示。
false代表非真值,編譯器內部用0來表示。
bool型別只有true(非0)和false(0)兩個值
c++編譯器會在賦值時將非0值轉換為true,0值轉換為false。
8.三目運算子的加強
c語言返回變數的值, c++語言是返回變數本身。
c語言中的三目運算子返回的是變數值,不能作為左值使用。
在c中怎麼才能實現和c++一樣的效果,只需取位址就可以了
#include int main()
C 對C的加強
c 是c語言的繼承,它既可以進行c語言的過程化程式設計,又可以進行以抽象資料型別為特點的基於物件的程式設計,還可以進行以繼承和多型為特點的物件導向的程式設計。c 擅長物件導向程式設計的同時,還可以進行基於過程的程式設計,因而c 就適應的問題規模而論,大小由之。c 不僅擁有計算機高效執行的實用性特徵,...
C 對C的加強
c 是c語言的繼承,它既可以進行c語言的過程化程式設計,又可以進行以抽象資料型別為特點的基於物件的程式設計,還可以進行以繼承和多型為特點的物件導向的程式設計。c 擅長物件導向程式設計的同時,還可以進行基於過程的程式設計,因而c 就適應的問題規模而論,大小由之。c 不僅擁有計算機高效執行的實用性特徵,...
c 對c的加強
1.register關鍵字的加強 register修飾符暗示編譯程式相應的變數將被頻繁地使用,如果可能的話,應將其儲存在cpu的暫存器中,以加快其儲存速度,這只是一種請求,編譯器可以拒絕這種申請。1 register變數必須是能被cpu所接受的型別。這通常意味著register變數必須是乙個單個的值...