自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

解析C++和C的區(qū)別

開發(fā) 后端
在C的基礎上,一九八三年又由貝爾實驗室的Bjarne Strou-strup推出了C++。 C++進一步擴充和完善了C語言,成為一種面向對象的程序設計語言。下面讓我們一起來了解C++和C吧!

C語言是一種結構化語言。它層次清晰,便于按模塊化方式組織程序,易于調試和維護。在很大程度上,標準C++是標準C的超集.實際上,所有C程序也是C++程序,然而,兩者之間有少量區(qū)別.下面簡要介紹一下最重要的區(qū)別.
 

在C++中,民,局部變量可以在一個程序塊內在任何地方聲明,在C中,局部變量必須在程序塊的開始部分,即在所有"操作"語句之前聲明,請注意,C99標準中取消了這種限制.
在C中,按如下方式聲明的函數(shù)沒有對函數(shù)變元進行任何說明;
int func();
也就是說,如果沒有在函數(shù)后面的括孤內指定任何變元,這在C中就意味著對函數(shù)變元未做任何聲明,該函數(shù)可能有變元,也可能沒有變元,然而,在C++中,這樣的函數(shù)聲明意味著該函數(shù)沒有變元,也就是說,在C++中,下面這兩個函數(shù)聲明具有同樣的作用:
int func();
int func(void);

在C++中,變元列表中的void是任選的.許多C++程序員使用它們是為了表明函數(shù)沒有任何變元的,以便于他人理解程序.但是,從技術上說,void不是必須的.
 

在C++中,所有函數(shù)均必須被設計成原型,但這在C中只是一種選擇.編程經(jīng)驗表明,在程序中也應該給函數(shù)采用原型設計方法.在C與C++之間還存在一個重要而又細微的差別,即字符常數(shù)在C中被自動作為整形來處理,但在C++中則不然.
 

在C中,多次聲明一個全局變量雖然不可取,但不算錯.在C++中,多次聲明同一個全局變量會引發(fā)錯誤.
 

在C中,一個標識符可以至少31個有效的組成字符.

在C++中,一個標識符的所有組成字符均是有效的.可是,從實用角度看,過長的標識符沒有太大的用處,不僅不便于記憶,而且還會增加出現(xiàn)打字錯誤的可能性.
在C中,在程序內部調用main()函數(shù)的情形不常見,但這種做法是容許的,在C++中,這種做法是不容許的.
在C中,無法獲得register型的地址,在C++中則可以獲得這種地址.
在C中,如果類型聲明語句中沒有指定類型名,該類型被假定成int,這種隱式轉型在C99與C++中是不允許的.

#include
using namespace std;
為什么沒有.h后綴名?

名稱iostream沒有擴展名.h,原因是是標準C++所定義的新式頭部文件之一,新式C++頭部文件不再使用.h擴展名.
第二行告訴編譯程序使用std名稱空間,名稱空間是最近才添加到C++中,一個名稱空間建立一個聲明范圍,在該范圍內可以放置各種程序元素.名稱空間用來幫助組織大型程序的結構.這條using語句通知編譯程序,程序員需要使用std名稱空間,這是整個標準C++庫聲明所使用的名稱空間.通過使用sdt名稱空間,程序可以簡化對標準庫的訪問.普通C程序僅使用C子集,不需要名稱空間語句,因為C的庫函數(shù)在默認的全局名稱空間中是可使用的.

 

類與結構體的區(qū)別:類與結構體是相互關聯(lián)的

結構是C的一部分,C++從C中繼承了結構,在語法上,類與結構十分相似,在關系上,這兩者也很接近,在C++中,結構的作用被拓寬了,進而使結構成為了類的一種替代方法.實際上,類與結構的惟一區(qū)別在于:在默認狀態(tài)下,結構的所有成員均是公有的,而類的所有成員是私有的.除此之外,類與結構是等價的,也就是說,一個結構定義了一個類的類型.
C++同時包含這兩個等價的關鍵字struct與class基于3個方面的原因.第一,加強結構的能力.在C中,結構提供了一種數(shù)據(jù)分組方法,因而讓結構包含成員函數(shù)是一個小小的改進.第二,由于類與結構是相互關聯(lián)的,所有現(xiàn)有C代碼到C++的移植變得更容易.第三,由于類與結構的等價性,提供兩個不同的關鍵字可以使類定義自由發(fā)展,為了保持C++與C的兼容性,結構定義必須始終受它的C定義的結束.
即使在有些地方可以使用結構來代替類,但盡量不要這么做,為了清楚起見,該用類的地方就用class關鍵字,該用C結構的地方就用struct關鍵字.

類與聯(lián)合是相互關聯(lián)的

聯(lián)合也可以用來定義類.在C++中,聯(lián)合包含成員函數(shù),變量以及構造與析構函數(shù).C++聯(lián)合保留了C聯(lián)合的全部特征,其中最重要的特征是所有數(shù)據(jù)元素共享內存的相同地址.與結構類似,聯(lián)合的成員在默認狀態(tài)下也是公有的,并且完全兼容于C.與結構一樣,C++中的聯(lián)合聲明定義了一種特殊的類,進而意味著保持了類的封裝原則.
 

C++的聯(lián)合有幾個必須遵守的使用限制.第一,聯(lián)合不能繼承其他任何類型的類.第二,聯(lián)合不能是基類,不能包含有虛函數(shù)成員.靜態(tài)變量不能是聯(lián)合的成員.聯(lián)合不能使用引用成員,而且不能有任何作為成員的重載賦值運算符的對象.第三,如果一個對象包含明確的構造或析構函數(shù),該對象不能成為聯(lián)合的成員.
 

C++有一個叫做匿名聯(lián)合的特殊聯(lián)合.匿名聯(lián)合沒有類型名,也不聲明任何變量,只是告訴編譯程序它的成員變量共享一個內存地址.但是,變量本身無需要使用常規(guī)的點運算符語法即可直接引用.
 

上述聯(lián)合的使用限制也適用于匿名聯(lián)合,但下面這兩個限制除外,第一,匿名聯(lián)合所包含的元素只能是數(shù)據(jù),不能包含成員函數(shù),也不能包含私有或受保護元素;第二,全局匿名聯(lián)合必須聲明成靜態(tài)的.

通過本文的介紹,我們可以了解到,C是C++的基礎,C++語言和C語言在很多方面是兼容的。因此,掌握了C語言,再進一步學習C++就能以一種熟悉的語法來學習面向對象的語言,從而達到事半功倍的目的。

【編輯推薦】

  1. 給C++初學者的50個忠告
  2. 一個實用主義者的觀點:如何學習使用C++
  3. c++最基礎的20條規(guī)則
  4. 我們?yōu)槭裁匆獙WC語言?
  5. C語言從入門到精通 目錄
責任編輯:于鐵 來源: CSDN博客
相關推薦

2011-07-20 17:31:12

C++

2011-07-20 17:48:07

C++

2010-02-06 14:40:50

C++初始化和賦值

2022-07-01 11:56:54

C語言C++編程語言

2020-06-17 12:22:44

C覆蓋重載

2011-04-06 08:57:07

C++java多態(tài)

2010-01-28 15:22:12

C++嵌套類

2010-01-28 14:38:36

C++和C#、Java

2011-07-13 18:00:51

CC++VC

2024-06-28 10:04:09

2009-10-22 09:17:16

C++ CLR

2010-01-15 17:38:37

C++語言

2011-06-21 15:00:07

JAVAC++

2024-02-26 12:13:32

C++開發(fā)編程

2010-01-08 16:52:57

C++和C#

2023-09-04 11:00:54

CC++語言

2010-01-25 18:24:11

C++

2012-08-03 08:57:37

C++

2009-08-13 17:30:30

C#構造函數(shù)

2024-05-15 16:01:04

C++編程開發(fā)
點贊
收藏

51CTO技術棧公眾號