c語言結構體和類之間的區(qū)別?
C/C++ 類和結構體的的區(qū)別:
1、結構體基本用在很多數(shù)據(jù),需要一個結構體來封裝這些數(shù)據(jù)。而類的話,是面向對象的思想,可以有很多接口讓人調用,私有變量等外部不能調用,還有保護類型的變量。
2、結構體也可以被認為是一種特殊的類,它不存在任何函數(shù),構造和析構函數(shù)也沒有,而且是一個公共的的類。
3、結構體在默認情況下成員是公共的(public),類在默認情況下成員是私有的(private)。
4、C++結構體內部成員變量及成員函數(shù)默認的訪問級別是public,而c++類的內部成員變量及成員函數(shù)的默認訪問級別是private。
5、C++結構體的繼承默認是public,而c++類的繼承默認是private。
6、類要加上public變成共有的才能被訪問,而結構本身就是共有的可直接訪問。
7、C定義結構體變量時需要加struct關鍵字,C++中定義結構體變量時可以不加struct關鍵字。
擴展資料:
世界上第一種計算機高級語言是誕生于1954年的FORTRAN語言。之后出現(xiàn)了多種計算機高級語言。1970年,AT&T的Bell實驗室的D.Ritchie和K.Thompson共同發(fā)明了C語言。研制C語言的初衷是用它編寫UNIX系統(tǒng)程序,因此,它實際上是UNIX的“副產品”。它充分結合了匯編語言和高級語言的優(yōu)點,高效而靈活,又容易移植。
1971年,瑞士聯(lián)邦技術學院N.Wirth教授發(fā)明了Pascal語言。Pascal語言語法嚴謹,層次分明,程序易寫,具有很強的可讀性,是第一個結構化的編程語言。
20世紀70年代中期,Bjarne Stroustrup在劍橋大學計算機中心工作。他使用過Simula和ALGOL,接觸過C。他對Simula的類體系感受頗深,對ALGOL的結構也很有研究,深知運行效率的意義。既要編程簡單、正確可靠,又要運行高效、可移植,是Bjarne Stroustrup的初衷。以C為背景,以Simula思想為基礎,正好符合他的設想。1979年,Bjame Sgoustrup到了Bell實驗室,開始從事將C改良為帶類的C(C with classes)的工作。
1983年該語言被正式命名為C++。自從C++被發(fā)明以來,它經歷了3次主要的修訂,每一次修訂都為C++增加了新的特征并作了一些修改。第一次修訂是在1985年,第二次修訂是在1990年,而第三次修訂發(fā)生在c++的標準化過程中。在20世紀90年代早期,人們開始為C++建立一個標準,并成立了一個ANSI和ISO(Intemational Standards Organization)國際標準化組織的聯(lián)合標準化委員會。該委員會在1994年1月25曰提出了第一個標準化草案。在這個草案中,委員會在保持Stroustrup最初定義的所有特征的同時,還增加了一些新的特征。
在完成C++標準化的第一個草案后不久,發(fā)生了一件事情使得C++標準被極大地擴展了:Alexander stepanov創(chuàng)建了標準模板庫(Standard Template Library,STL)。STL不僅功能強大,同時非常優(yōu)雅,然而,它也是非常龐大的。在通過了第一個草案之后,委員會投票并通過了將STL包含到C++標準中的提議。STL對C++的擴展超出了C++的最初定義范圍。雖然在標準中增加STL是個很重要的決定,但也因此延緩了C++標準化的進程。
委員會于1997年11月14日通過了該標準的最終草案,1998年,C++的ANSI/IS0標準被投入使用。通常,這個版本的C++被認為是標準C++。所有的主流C++編譯器都支持這個版本的C++,包括微軟的Visual C++和Borland公司的C++Builder。
C++是C語言的繼承,它既可以進行C語言的過程化程序設計,又可以進行以抽象數(shù)據(jù)類型為特點的基于對象的程序設計,還可以進行以繼承和多態(tài)為特點的面向對象的程序設計。C++擅長面向對象程序設計的同時,還可以進行基于過程的程序設計,因而C++就適應的問題規(guī)模而論,大小由之。
C++不僅擁有計算機高效運行的實用性特征,同時還致力于提高大規(guī)模程序的編程質量與程序設計語言的問題描述能力