c++是c語言的加強,是一種更好的c語言
c++是以c語言為基礎的,並且完全相容c語言的特性
c語言 + 物件導向方**===》objective c /c++
c++:以c語言為基礎+物件導向支援+(型別加強、函式加強、異常處理)
標準格式:
namespace name
c中的命名空間
在c語言中只有乙個全域性作用域
c語言中所有的全域性識別符號共享同乙個作用域
識別符號之間可能發生衝突
c++中提出了命名空間的概念
命名空間將全域性作用域分成不同的部分
不同命名空間中的識別符號可以同名而不會發生衝突
命名空間可以相互巢狀
全域性作用域也叫預設命名空間
std是c++標準命名空間,c++標準程式庫中的所有識別符號都被定義在std中,比如標準庫中的類iostream、vector等都定義在該命名空間中
c語言中的變數都必須在作用域開始的位置定義
c++中更強調語言的「實用性」,所有的變數都可以在需要使用時再定義
在c語言中,重複定義多個同名的全域性變數是合法的
在c++中,不允許定義多個同名的全域性變數
c語言的struct定義了一組變數的集合,c編譯器並不認為這是一種新的型別
c++中的struct是乙個新型別的定義宣告
c++中所有的變數和函式都必須有型別
c語言中的預設型別在c++中是不合法的
c++更加強調型別,任意的程式元素都必須顯示指明型別
c++在c語言的基本型別系統之上增加了bool
c++中的bool可取的值只有true和false
理論上bool只占用乙個位元組
bool型別只有true(非0)和false(0)兩個值
c++編譯器會在賦值時將非0值轉換為true,0值轉換為false
c語言返回變數的值 c++語言是返回變數本身
c語言中的三目運算子返回的是變數值,不能作為左值使用
c++中的三目運算子可直接返回變數本身,因此可以出現在程式的任何地方
注意:三目運算子可能返回的值中如果有乙個是常量值,則不能作為左值使用
c語言中的const變數
c語言中const變數是唯讀變數,有自己的儲存空間
c++中的const常量
可能分配儲存空間,也可能不分配儲存空間
當const常量為全域性,並且需要在其它檔案中使用,會分配儲存空間
當使用&操作符,取const常量的位址時,會分配儲存空間
當const int &a = 10; const修飾引用時,也會分配儲存空間
c++中的const常量類似於巨集定義
const int c = 5; ≈ #define c 5
c++中的const常量與巨集定義不同
const常量是由編譯器處理的,提供型別檢查和作用域檢查
巨集定義由預處理器處理,單純的文字替換
C 對C的擴充套件
1.c 會對函式返回值型別和引數個數進行檢測 c語言預設為返回值為int,引數個數不做檢查 2.c 在定義結構體變數時,關鍵字struct可以省略,結構體名不能省 3.在全域性中定義 int val g bss段 全是0 在全域性中 int val g 20 data c正確 2是賦值 c 錯誤 重...
c 對c的擴充套件
1 c 對型別檢查比c語言更為嚴格。如 demo1.c char p malloc 100 c語言可以通過,c 報錯 char p char malloc 100 正確 demo2.c const int a 100 int p a c語言警告,c 直接報錯 const int p a 正確 dem...
C 對C的擴充套件 增強
c 對c的擴充套件 1.雙冒號 作用域運算子 中對同乙個變數多次宣告,在 塊中使用時,區域性變數會將全域性變數隱藏。若在 塊使用變數前新增 表示為全域性變數。表示作用域運算子,如常見的std cout,std endl 等,表示cout和endl是std作用域下的識別符號。2.命名空間namespa...