C++ 對C語言的加強

首先,C++是以C語言爲基礎的,而且徹底兼容C語言的特性。 學習C++語言,對於歷來沒有學習過面向對象的程序員來講,在學習C++語言時候,着重點學習C++語言面向對象的三大特性,這也是其餘面嚮對象語言的三大特性,原理都同樣,只是代碼實現不一樣而已。c++

C++面向對象的三大特性程序員

封裝,繼承,多態函數

 

1   namespace 命名空間
學習

 

C中的命名空間優化

在C語言中只有一個全局做用域spa

       c語言中全部的全局標識符共享同一個做用域code

       標識符之間可能發生衝突對象

C++blog

命名空間將全局做用域分紅不一樣的部分繼承

        命名空間能夠相互嵌套

        全局做用域也叫默認命名空間

C++命名空間的定義:

namespace name 
{

}

C++命名空間的使用:

使用整個命名空間: using namespace name;

使用命名空間的變量:using name::variable;

  

結論:

C++標準爲了和C區別開,也爲了正確的使用命名空間,規定頭文件不使用後綴.h

 

2    "實用性"增長

 

//c 語言中的變量都必須在做用域開始的位置定義!

  //C++中更增強調語言的」實用性「,全部的變量均可以在須要使用時候再定義。

 

3  register關鍵字加強

 

//register關鍵字,請求編譯器讓變量a直接放在寄存器裏面,速度快。

         C語言中,沒法取得register變量的地址

         C++語言中,C++編譯器有本身的優化方式,能夠取得register變量的地址。

並且現代的C++編譯器比較智能,即便在不使用register關鍵字,也會將頻繁使用的變量進行register優化。

 

4  變量檢測的加強

 

C語言中,重複定義多個同名的全局變量是合法的。例如:

int g_var;

int g_var = 1;

可是在C++中,不容許定義多個同名的全局變量

C語言中的多個同名的全局變量,最終會被連接到全局數據區的同一個地址空間上。

 

5 struct 類型的增強

 

C語言中 struct定義了一組變量的集合,C編譯器並不認爲這是一種新的類型(注意)

所以用C語言中的struct類型定義變量時候,必須帶上struct關鍵字。

c++語言中,是一種新的類型聲明,而且能夠在struct裏面加上函數,默認的訪問權限是public。 在功能上,跟類類型差很少。

 

6 C++中的全部的變量和函數必須有類型

 

在C語言中,

int f();//表示返回值爲int,接受任意參的函數

int f(void);//表示返回值爲int的無參函數
 

在C++語言中,

int f(); 
int f(void); //以上兩行等價的,都表示函數返回值是int的無參函數

 

7 C++新增的Bool類型關鍵字

 

C++中bool 的值只可取 true和false

理論上bool只佔一個字節,多個bool變量在一塊兒,可能會佔一個字節,取決於編譯器實現。

true表明真值,編譯器內部用1表示,

false表明假值,編譯器內部用0表示,

C++編譯器會在賦值時,把非0值轉換爲true,0值轉換爲false

 

8 三目運算符在c和C++編譯器中的表現

 

C語言中,三目運算符返回的是變量的值,不能用做左值。

C++語言中,三目運算符返回的是變量自己,所以能夠用在程序任何地方。

注意:三目運算符可能返回的值中若是有一個是常量值,則不能做爲左值使用

               當左值的條件:要有內存空間,其實C++編譯器是幫程序員取了一個地址而已。

int a = 20;
int b = 30;
*(a<b ?: &a, &b) - 30;
相關文章
相關標籤/搜索