c++是c語言的繼承,它既可以進行c語言的過程化程式設計,又可以進行以抽象資料型別為特點的基於物件的程式設計,還可以進行以繼承和多型為特點的物件導向的程式設計。c++擅長物件導向程式設計的同時,還可以進行基於過程的程式設計,因而c++就適應的問題規模而論,大小由之。
c++不僅擁有計算機高效執行的實用性特徵,同時還致力於提高大規模程式的程式設計質量與程式語言的問題描述能力。
1、c++繼承了所有的c特性。
2、c++在c的基礎上提供了更多的語法和特性。
3、c++的設計目標是執行效率與開發效率的統一。
1、對變數定義的加強
在c中: c語言中的變數都必須在作用域的開始位置定義;
在c++中: c++中更強調語言的「實用性」,所有的變數都可以在需要使用時再定義;
注意: 在現代編譯器中c已經可以。
2、對register關鍵字的變化
在c中: 在c語言中無法取得register變數的位址;
在c++中: 為了相容c語言依然支援register關鍵字。c++編譯器有自己的優化方式,不使用register也可能做優化。c++中可以取得register變數的位址,因為c++編譯器發現程式中需要去register變數的位址時,register對變數的宣告變得無效;
3、全域性變數的宣告
在c中: 全域性變數的宣告可以省略extern;
在c++中: 全域性變數的宣告不可以省略extern;
4、對const的加強
在c中: const修飾的是唯讀變數,分配儲存空間,可以通過指標更改;
在c++中: const修飾的是常量,當碰見常量宣告時在符號表中放入常量,編譯過程中如發現使用常量則直接以符號表中的值替換,編譯過程中若發現對const使用了extern或者&操作符,則給對應的常量分配儲存空間。c++編譯器雖然可能為const常量分配空間,但不會使用其儲存空間中的值。它是常量,所以在c++中const可以用來定義陣列的大小;
5、對型別的加強
在c中: c語言的struct定義了一組變數的集合,c編譯器並不認為這是一種新的型別;
在c++中: c++中的struct是乙個新型別的定義宣告;
6、對函式定義的加強
在c中: 在預設情況下會有一些預設情況。int f():表示返回值為int,接受任意引數的函式。int f(void):表示返回值為int的無參函式;
在c++中: c++中所有的變數和函式都必須有型別。c語言中的預設型別在c++中是不合法的。int f()和int f(void)具有相同的意義,都表示返回值為int的無參函式;
7、增加bool型別
在c中: 不存在bool型別,也不存在true和false關鍵字;
在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語言為基礎進行了加強:
1、c++更情調實用性,可以在任意的地方宣告變數;
2、c++中的register只是乙個向後相容的作用,c++編譯器能夠進行更好的變數優化;
3、c++中的const是乙個真正意義上的常量,而不是唯讀變數;
4、c++更加強調型別,任意的程式元素都必須顯示指明型別;
C 對C的加強
c 是c語言的繼承,它既可以進行c語言的過程化程式設計,又可以進行以抽象資料型別為特點的基於物件的程式設計,還可以進行以繼承和多型為特點的物件導向的程式設計。c 擅長物件導向程式設計的同時,還可以進行基於過程的程式設計,因而c 就適應的問題規模而論,大小由之。c 不僅擁有計算機高效執行的實用性特徵,...
c 對c的加強
1.register關鍵字的加強 register修飾符暗示編譯程式相應的變數將被頻繁地使用,如果可能的話,應將其儲存在cpu的暫存器中,以加快其儲存速度,這只是一種請求,編譯器可以拒絕這種申請。1 register變數必須是能被cpu所接受的型別。這通常意味著register變數必須是乙個單個的值...
c 對c的加強(一)
最好定義在標頭檔案中 使用命名空間的目的 防止變數名 函式名 類名發生衝突,限制變數的作用域 命名空間的定義 namespace one 命名空間的使用 命名空間名 變數名或者函式名 one num 命名空間可以巢狀使用 namespace one namespace one1 std cout 標...