C語言和C++語言關係
C++是C語言的加強,是一種更好的C語言
C++是以C語言爲基礎的,並且完全兼容C語言的特性
C語言 + 面向對象方法論===》Objective C /C++
C++:以C語言爲基礎+面向對象支持+(類型加強、函數加強、異常處理)
命名空間:namespace
標準格式:
namespace name{.....}
C中的命名空間
在C語言中只有一個全局作用域
C語言中所有的全局標識符共享同一個作用域
標識符之間可能發生衝突
C++中提出了命名空間的概念
命名空間將全局作用域分成不同的部分
不同命名空間中的標識符可以同名而不會發生衝突
命名空間可以相互嵌套
全局作用域也叫默認命名空間
std是c++標準命名空間,c++標準程序庫中的所有標識符都被定義在std中,比如標準庫中的類iostream、vector等都定義在該命名空間中
實用性增強了
C語言中的變量都必須在作用域開始的位置定義
C++中更強調語言的“實用性”,所有的變量都可以在需要使用時再定義
變量檢測增強
在C語言中,重複定義多個同名的全局變量是合法的
在C++中,不允許定義多個同名的全局變量
C語言中多個同名的全局變量最終會被鏈接到全局數據區的同一個地址空間上
struct 類型增強
C語言的struct定義了一組變量的集合,C編譯器並不認爲這是一種新的類型
C++中的struct是一個新類型的定義聲明
類型要求增強
C++中所有的變量和函數都必須有類型
C語言中的默認類型在C++中是不合法的
C++更加強調類型,任意的程序元素都必須顯示指明類型
新增bool 類型
C++在C語言的基本類型系統之上增加了bool
C++中的bool可取的值只有true和false
理論上bool只佔用一個字節
bool類型只有true(非0)和false(0)兩個值
C++編譯器會在賦值時將非0值轉換爲true,0值轉換爲false
三目運算符增強
C語言返回變量的值 C++語言是返回變量本身
C語言中的三目運算符返回的是變量值,不能作爲左值使用
C++中的三目運算符可直接返回變量本身,因此可以出現在程序的任何地方
注意:三目運算符可能返回的值中如果有一個是常量值,則不能作爲左值使用
const常量增強
C語言中的const變量
C語言中const變量是隻讀變量,有自己的存儲空間
C++中的const常量
可能分配存儲空間,也可能不分配存儲空間
當const常量爲全局,並且需要在其它文件中使用,會分配存儲空間
當使用&操作符,取const常量的地址時,會分配存儲空間
當const int &a = 10; const修飾引用時,也會分配存儲空間
const 與 #define的區別
C++中的const常量類似於宏定義
const int c = 5; ≈ #define c 5
C++中的const常量與宏定義不同
const常量是由編譯器處理的,提供類型檢查和作用域檢查
宏定義由預處理器處理,單純的文本替換