c語言實現繼承和多態
㈠ C 與 C++ 的真正區別在哪裡
C 與 C++ 的真正區別為以下幾點:
才疏學淺,希望我的回答能給你帶來幫助,望採納!
㈡ 全國計算機等級考試二級c語言和C++的區別
1、本質不同
C語言用於測試考生的計算機應用知識和技能。
C++是C語言的繼承。它可以實現c語言的程序化編程、抽象數據類型的基於對象編程、繼承性和多態性的面向對象編程。
2、功能不同
c語扮悄言的設計目標是提供一種編程語言磨譽,它可以簡單地編譯、處理底層內存,只生成少量的機器代碼,運行時不需要任何運行環境的支持。
C++不僅具有高效的計算機操作的實際特性,而且還致力於提高大規模編程的質量廳游渣和編程語言的問題描述能力。
3、難易程度不同
C語言是基礎內容相對容易。
C++是在C語言之上的更深層次的編程語言。所以C語言好考。
㈢ C/C++語言特點是什麼
(1)C語言特點:
1.作為一種面向過程的結構化語言,易於調試和維護;
2.表現能力和處理能力極強,可以直接訪問內存的物理地址;
3.C語言實現了對硬體的編程操作,也適合於應用軟體的開發;
4.C語言還具有效率高,可移植性強等特點。
(2)C++語言特點:
1.在C語言的基礎上進行擴充和完善,使C++兼容了C語言的面向過程特點,又成為了一種面向對象的程序設計語言;
2.可以使用抽象數據類型進行基於對象的編程;
3.可以使用多繼承、多態進行面向對象的編程;
4.可以擔負起以模版為特徵的泛型化編程。
C++與C語言的本質差別:在於C++是面向對象的,而C語言是面向過程的。或者說C++是在C語言的基礎上增加了面向對象程序設
計的新內容,是對C語言的一次更重要的改革,使得C++成為軟體開發的重要工具。
㈣ 為什麼選擇RTEMS
這些問題略微的有一些復雜,我就專門寫篇文章來作答。以前,我做商業項目都是使用FreeRTOS和uC/OS-II的, FreeRTOS和uC/OS-II都差不多,核心代碼不過幾千行。突出的特點是,好掌握,易上手,在較短的時間內就能上手開發。但是同時帶來一個問題,由於驅動的缺乏,不僅僅是缺乏驅動,更缺的是,驅動的統一框架。所以設計驅動的時候,不僅僅是讓相關的設備能工作,更多的是要設計一個驅動結構。對於商業項目來講,交付完成後都是需要維護的。自己設計的驅動結構,風險和成本都比較高。需要很長的時間才能穩定下來。尤其是在需要實時性的場合。 uC/OS-II的API不豐富也是個棘手的大問題,我們的項目中,uC/OS-II,我們用C++封裝了大量的系統函數,便於系統的使用。因為項目的軟體架構是UML用面向對象的思想寫得。利用 C語言可以實現面向對象的思想架構設計,但是要運用大量的技巧,需要用函數指針實現多態和繼承。這個對編程人員來說,無端端需要了更高的技術水平。為了降低對開發人員的技術要求,使用C++做開發,與C相比,除運行效率略有些損失外,帶來更多的好處。C++有嚴格的語法保證繼承和多態,這個是C裡面沒有的。架構設計可直接轉化為C++的框架代碼,可節省不少的人力物力。然而,uC/OS-II是C函數編寫的,做C++擴展,封裝設計也需要不少的工作。這些都是uC/OS-II不具備的。 我們的系統頗為復雜,需要使用到TCP/IP,uC/OS-II有系統自帶的uTCP/IP;選用了這個協議棧噩夢才剛剛開始。本以為這個協議棧很穩定,在使用跡凳期間,才發現協議棧有很多非常深層次的問題。1.首先有些層次支持IP分包,又有些層次不支持分包;2.TCP連接在使用一段時間後,隨機出現沒有FIN信號和SYN信號,導致和PC系統斷鏈接;3.多台計算機(超過十台)同時ping協議棧,協議棧會掛掉,無法恢復;4.使用大包ping協議棧,也會出閉州燃現奇奇怪怪的問題。5.也許是我們定製水平不夠,系統連續跑到7天以上後,會造成硬體的MAC層會隨機掛掉,我們用同樣的linux代碼測試,是沒有這樣的問題。驅動也是極力模仿linux,但是問題解決不掉,還是會出現這樣的情況。 最後頭疼的問題,是uC/OS-II的授權問題,人家是開源的,商業用是要收費的。說實話,用起來沒有問題,付錢我倒沒啥意見,關鍵是問題一堆,也沒啥付錢的動力和想法。失望之餘,我開始尋找新的替代操作系統,一句話,就是要成熟穩定可靠。VxWorks倒是不錯的選擇,但是授權費用太貴了,會把我們的利潤榨乾;沒辦法干這種事情,企業要生存的。於是找到了RTEMS,這個操作系統本身的性能超過了VxWorks,不過是2005年以前測得,現在還沒有大牛比較過。 我第一接觸到RTEMS之後,感覺到的是「強大」! 緊接著就是「麻煩」!說強大,發展時間長,代碼質量高,系統相當之穩定。我們移植到uC/OS-II相同的硬體平台上,RTEMS自帶的BSD協議棧表現的相當出色,隨便轎虛Ping,隨便telnet,運行了十幾天,相當之穩定。絲毫沒有頹勢;API函數相當的豐富,也有一套成熟的驅動結構。(和Linux比起來還是有些簡陋,但是足夠用了)完善的C++封裝。同時 RTEMS是開源免費,使用的發布協議是使用了RTEMS,你高興公開你的代碼你就公開,不高興公開就不公開(嚴格的來說不是這樣,但最終的效果是一樣的)。 欣喜之餘,問題來了,麻煩!由於使用GNU的工具鏈,對於使用windows下集成開發環境的團隊來說,那是相當的麻煩。不僅僅因為需要裝虛擬機在linux下開發,rtems的調試跟蹤,代碼撰寫等等,都需要用單獨的工具完成,對人員的素質要求很高。細節也非常的多,一不小心,埋下伏筆,呵呵,那就是給自己找麻煩了。再者,就是RTEMS的學習資料少得可憐,中國實際上潛在的研究人員非常多,但他們不願意也沒時間把自己的研究公布出來;國外的話只有官方的文檔有些介紹。且介紹中的疏漏相當的多,需要潛心的研究。 畢竟全世界專職維護RTEMS的人就那麼幾個,需要用google summer code推動一些周邊項目,並不像VxWorks那樣面面俱到的商業項目,什麼都是完美的。也正因為這些瑕疵,更顯得RTEMS的可貴。 對於我來說,選擇RTEMS,只是想應用於我的項目,我的產品。然而,從學習的角度來說,比那些集成化的工具來說,能學習到更多的東西,從深層次了解嵌入式系統的開發。IAR EWARM、RVDS這樣的工具用熟了,不代表就可以把GNU玩轉了,但把GNU玩轉了,集成環境一定是沒有問題的。所以,對廣大的學生朋友來說,RTEMS是一個不錯的,提升自己全方面能力的東西。不過,學習難度稍微有些大了,介紹資料又少,的確是有問題。 前陣子,看到一個笑話是,上世紀80年代只有資本主義才能救中國,上世紀90年代只有中國才能就亞洲,現在只有中國才能救世界。中國由中國製造變為中國創造,需要更多的軟實力;中國如火如荼的物聯網技術,通訊模塊、操作系統、晶元都是國外的,中國搞的是物聯網協議規范,試問,你都沒有自己的東西,憑什麼人家要尊重你的游戲規則?所謂的物聯網,只不過是中國人的一廂情願。說不好聽的,掩耳盜鈴而已。
㈤ cin>>n在c語言是什麼意思
C++中的cin>>x等價於C語言里的 scanf//從鍵盤輸入一個整數放在變數x里。
C++是C語言的繼承,它既可以進行C語言的過程化程序設計,又可以進行以抽象數搏悉據類型為特點的基於對象的程序設計,還可以進行以繼承和多態為特點的面向對象的程序設計。
C++擅長面向對象程序設計的同時,還可以進行基於過程的程序設計,因而C++就適應的問題規模而論,大小由之。
C++不僅擁有計算機高效運行的實用性特徵,同時還致力於提高大規模程序的編程質量與程序設計語言的問題描述能力。
在C++中,類是余正支持數據封裝的工具,對象則是數據封裝的實現。C++通過建立用戶定義類支持數據封裝和數據隱藏。
在面向對象的程序設計中,將數據和基毀乎對該數據進行合法操作的.函數封裝在一起作為一個類的定義。對象被說明為具有一個給定類的變數。
每個給定類的對象包含這個類所規定的若干私有成員、公有成員及保護成員。完好定義的類一旦建立,就可看成完全封裝的實體,可以作為一個整體單元使用。類的實際內部工作隱藏起來,使用完好定義的類的用戶不需要知道類是如何工作的,只要知道如何使用它即可。
㈥ C語言是怎樣實現封裝,繼承,多態的
封裝,繼承,多態的是C++的面向對象的特性,C語言不具備這些特性。
㈦ c++ 的特點是什麼c++ 的特點是什麼談談它的多態性。
C++是以C語言為基礎,支持數據抽象和面向對象的程序設計語言。C++對C語言的擴充部分汲取了
許多著名語言中最優秀的特徵,如從Algo168中吸取了操作符重載機制等。由於C++語言具有與C語言一
樣的高執行效率,並容易被熟悉C語言的軟體人員接受,因而很快得以流行。但這種混合型面向對象的
程序設計語言是一種新的程序設計語言,人們對它許多潛在的性能(封裝、繼承、多態等)還沒有充分
地理解和應用,沒有充分發揮其優勢。多態性是面向對象系統的重要概念之一,它指的是同樣的消息
能被發送到父類的對象和它的子類的對象。本文重點討論多態性在程序設計中的應用。
1 多態性的實現形式
從廣義上說,多態性是指一段程序能夠處理多種類型對象的能力。在C++語言中,這種多態性可以
通過強制多態、重載多態、類型參數化多態、包含多態4種形式來實現。類型參數化多態和包含多態統
稱為一般多態性,用來系統地刻畫語義上相關的一組類型。重載多態和強制多態統稱為特殊多態性,
用來刻畫語義上無關聯的類型間的關系。
包含多態是指通過子類型化,1個程序段既能處理類型T的對象,也能夠處理類型T的子類型S的對
象,該程序段稱為多態程序段。公有繼承能夠實現子類型。在包含多態中,1個對象可以被看作屬於不
同的類,其間包含關系的存在意味著公共結構的存在。包含多態在不少語言中存在,如整數類型中的
子集構成1個子類型。每一個子類型中的對象可以被用在高一級的類型中,高一級類型中的所有操作可
用於下一級的對象。在C++中公有繼承關系是一種包含多態,每一個類可以直接公有繼承父類或多個父
類,如語句class D�public P1,public P2{……};表示類D分別是類P1和類P2的子類型。
類型參數化多態是指當1個函數(類)統一地對若干類型參數操作時,這些類型表現出某些公共的語
義特性,而該函數(類)就是用來描述該特性的。在類型參數化多態中,1個多態函數(類)必須至少帶有
1個類型參數,該類型參數確定函數(類)在每次執行時操作數的類型。這種函數(類)也稱類屬函數(類)
。類型參數化多態的應用較廣泛,被稱為最純的多態。
重載是指用同一個名字命名不同的函數或操作符。函數重載是C++對一般程序設計語言中操作符重
載機制的擴充,它可使具有相同或相近含義的函數用相同的名字,只要其參數的個數、次序或類型不
一樣即可。例如:
int min(int x,int y); //求2個整數的最小數
int min(int x,int y,int z); //求3個整數的最小數
int min(int n,int a〔〕); //求n個整數的最小數
當用戶要求增加比較2個字元串大小的功能時,只需增加:
char*min(char*,char*);
而原來如何使用這組函數的邏輯不需改變,min的功能擴充很容易,也就是說維護比較容易,同時也提
高了程序的可理解性,「min」表示求最小值的函數。
強制是指將一種類型的值轉換成另一種類型的值進行的語義操作,從而防止類型錯誤。類型轉換
可以是隱式的,在編譯時完成,如語句D=I把整型變數轉換為實型;也可以是顯式的,可在動態運行
時完成。
從總體上來說,一般多態性是真正的多態性;特殊多態性只是表面的多態性。因為重載只允許某
一個符號有多種類型,而它所代表的值分別具有不同的、不相兼容的類型。類似地,隱式類型轉換也
不是真正的多態,因為在操作開始前,各值必須轉換為要求的類型,而輸出類型也與輸入類型無關。
相比之下,子類與繼承卻是真正的多態。類型參數化多態也是一種純正的多態,同一對象或函數在不
同的類型上下文中統一地使用而不需採用隱式類型轉換、運行時檢測或其它各種限制。
2 多態性應用
2.1 包含多態
C++中採用虛擬函數實現包含多態,虛擬函數為C++提供了更為靈活的多態機制,這種多態性在程
序運行時才能確定,因此虛擬函數是多態性的精華,至少含有一個虛擬函數的類稱為多態類。包含多
態在程序設計中使用十分頻繁。
派生類繼承基類的所有操作,或者說,基類的操作能被用於操作派生類的對象,當基類的操作不
能適應派生類時,派生類需重載基類的操作,見下例中的void circle::showarea()。
#include <iostream.h>
class point //屏幕上的點類
� {int x,y;
public;
point(int x1,int y1)
{x=x1;y=y1;}
void showarea()
{cout<<〃Area of point is:〃<<0.0<<endl;}
};
class circle:public point//圓類
{int radius;
public:
circle(int x,int y,int r):point(x,y){ radius=r;}
void showarea(){cout<<〃Area of circle is:〃<<3.14
*radius*radius<<endl;}
};
void disparea(const point*p) //多態程序段
{p->showarea();}
void main()
{circle c1(1,1,1);disparea(&c1);
}
程序的運行結果為0.0(正確結果應為3.14),出錯的原因是:表達式p->showarea()中的函數調
用在編譯時被束定到函數體上,使得這個表達式中的函數調用執行point類的showarea()。為此,當程
序員在實現一個派生類而變動了基類中的操作實現時,C++提供的虛函數機制可將這種變動告訴編譯器
,即將關鍵字virtual放在類point中該函數的函數說明之前(virtual void showarea()),程序其它部
分保持不變(circle::showarea()自動地成為虛函數),編譯器就不會對函數調用p->showarea()進
行靜態束定(在編譯/連接時進行的束定)而產生有關的代碼,使函數調用與它所應執行的代碼的束定
工作在程序運行時進行,這樣上述程序的運行結果即為3.14。在程序運行時進行的束定被稱為動態束
定。
利用虛函數,可在基類和派生類中使用相同的函數名定義函數的不同實現,從而實現「一個介面
,多種方式」。當用基類指針或引用對虛函數進行訪問時,軟體系統將根據運行時指針或引用所指向
或引用的實際對象來確定調用對象所在類的虛函數版本。
C++語言還增加了純的虛函數機制用來更好地設計包含多態性。對於如圖1(a)所示結構的類層次,
假如每個類中都有一個函數「void display(void);」,那麼,怎樣對它們按多態性進行統一處理呢
?對這類問題應先設計一個抽象的類,使它成為所有類的祖先類,如圖1(b)所示。設置類A的目的是由
它說明統一使用該層次中的display()函數的方法(賦值兼容規則從語法上保證了A的子孫類可按A說明
的方式使用display()函數;多態性則從語義上保證了在執行時,根據實際的對象訪問相應對象類中的
display()函數)。
為了保證在類A中設置的display()函數是抽象動作,並能說明類A是一個抽象的類,在C++中,可用純
的虛函數語言機制在類A中聲明1個成員函數「virtual void display(void)=0;」。請注意,在類A
的子孫類中要麼給出display()的定義,要麼重新將該函數聲明為純的。
從上面的分析可以看出,類A的設計盡管是用繼承性語法表達的,但它的主要目的不是為代碼共享而設
計的,而是為了提高多態性而設計的,它是另一個維度的抽象。
2.2 類型參數化多態
參數化多態又稱非受限類屬多態,即將類型作為函數或類的參數,避免了為各種不同的數據類型
編寫不同的函數或類,減輕了設計者負擔,提高了程序設計的靈活性。
模板是C++實現參數化多態性的工具,分為函數模板和類模板二種。
類模板中的成員函數均為函數模板,因此函數模板是為類模板服務的。類模板在表示數組、表、
矩陣等類數據結構時,顯得特別重要,因為這些數據結構的表示和演算法的選擇不受其所包含的元素的
類型的影響。下面是一個通用數組類模板的定義。
template <class T,int N>
class array
{T elem〔N〕;
public:
array(){for(int j=0;j<N;j++)elem〔j〕=0;}
T& operator〔〕(int index){return elem〔index〕;}
void modi(int index,T value){elem〔index〕=value;}
};
其中,T是類型參數,N是常量參數。T和N的實際值是在生成具體類實例時指定的。類模板的< >
可以包括任意個類型參數或常量參數,但至少應有一個參數。在類模板定義中,可在程序中通常使用
類型指定的任何地方使用類型參數,可在通常使用特定類型常量表達式的任何地方使用常量參數。
成員函數模板可放在類模板中定義,也可放在類外定義,例如:
template <class T,int N>
T& array<T,N>::operator〔〕(int index){return elem〔index〕;}
當由類模板生成一個特定的類時,必須指定參數所代表的類型(值)。例如,1個元素類型為int、
長度為100的數組類使用類型表達式array<int,100>來表示,這個類型表達式被用於說明數組類對
象。例如:
array<int,100> a: //生成特定類的對象a
a.modi(1,34); //對象a訪問成員函數
類模板一旦生成了對象和指定了參數表中的類型,編譯器在以後訪問數據成員和調用成員函數時
完全強制為這些類型。
在C++中可以重載定義多個同名的函數模板,也可以將1個函數模板與1個同名函數進行重載定義。
例如:
template <class T> T min(T a,T b){return a<b?a:b;}
template <class T>
T min(T a,T b,T c){T x=min(a,b);return min(x,c);}
int min(int a,int b)〔return a<b?a:b;}
調用min(3,7),則調用第3個函數;調用min(3.8.5.9),編譯器將根據帶2個參數的模板生成新函
數min(double,double);調用min(4,90,76),則編譯器根據帶3個參數的模板生成新函數min(int,
int,int);而調用min(56.3,48,71),編譯將給出錯誤信息,說明無法從上面的模板中生成函數
min(double,double,double),因為編譯器在類型推導時,不存在類型強制。
模板描述了1組函數或1組類,它主要用於避免程序員進行重復的編碼工作,大大簡化、方便了面
向對象的程序設計。
2.3 重載多態
重載是多態性的最簡形式,而且把更大的靈活性和擴展性添加到程序設計語言中,它分成操作符
重載和函數重載。
C++允許為類重定義已有操作符的語義,使系統預定義的操作符可操作類對象。C++語言的一個非
常有說服力的例子是count對象的插入操作(<<)。由於其類中定義了對位左移操作符「<<」進行重
載的函數,使C++的輸出可按同一種方式進行,學習起來非常容易。並且,增加一個使其能輸出復數類
的功能(擴充)也很簡單,不必破壞原輸出邏輯。
C++規定將操作符重載為函數的形式,既可以重載為類的成員函數,也可以重載為類的友員函數。
用友員重載操作符的函數也稱操作符函數,它與用成員函數重載操作符的函數不同,後者本身是類中
成員函數,而它是類的友員函數,是獨立於類的一般函數。注意重載操作符時,不能改變它們的優先
級,不能改變這些操作符所需操作數的個數。
重定義已有的函數稱為函數重載。在C++中既允許重載一般函數,也允許重載類的成員函數。如對
構造函數進行重載定義,可使程序有幾種不同的途徑對類對象進行初始化。還允許派生類的成員函數
重載基類的成員函數,虛函數就屬於這種形式的重載,但它是一種動態的重載方式,即所謂的「動態
聯編(束定)」。
2.4 強制多態
強制也稱類型轉換。C++語言定義了基本數據類型之間的轉換規則,即:
char->short->int->unsigned->long->unsigned long->float->double->long
double
賦值操作是個特例,上述原則不再適用。當賦值操作符的右操作數的類型與左操作數的類型不同
時,右操作數的值被轉換為左操作數的類型的值,然後將轉換後的值賦值給左操作數。
程序員可以在表達式中使用3種強制類型轉換表達式:①static_cast<T>(E);②T(E);③(T)E
。其中任意一種都可改變編譯器所使用的規則,以便按自己的意願進行所需的類型強制。其中E 代表
一個運算表達式,T代表一個類型表達式。第三種表達形式是C語言中所使用的風格,在C++中,建議不
要再使用這種形式,應選擇使用第一種形式。例如,設對象f的類型為double,且其值為3.14。則表達
式static_cast<int>(f)的值為3,類型為int。
通過構造函數進行類類型與其它數據類型之間的轉換必須有一個前提,那就是此類一定要有一個
只帶1個非預設參數的構造函數,通過構造函數進行類類型的轉換只能從參數類型向類類型轉換,而想
將一個類類型向其它類型轉換是辦不到的。類類型轉換函數就是專門用來將類類型向其它本類型轉換
的,它是一種類似顯式類型轉換的機制。轉換函數的設計有以下幾點要特別注意:①轉換函數必須是
類的成員函數;②轉換函數不可以指定其返回值類型;③轉換函數其參數行不可以有任何參數。
強制使類型檢查復雜化,尤其在允許重載的情況下,導致無法消解的二義性,在程序設計時要注
意避免由於強制帶來的二義性。
㈧ c++多態的實現方式有哪些
c++是一種編程語言,當然只有一種。但是基於c++的編程平台有很多種。
在這些平台上編程序,用的語言是c++的,但是在一些細節上會有所不同。我接觸過的主要有vc++,symbian c++,borland c++,它們都是基於c++的,但是編程風格或方式稍有不同。
你學c++要打好基礎,先學好c++語言。看書的時候可以找一些書名為「c++編程語言」之類的書,只有在學好c++語言後,才可以去具體的學習某個平台的編程教程。
一般來說,多態分為兩種,靜態多態和動態多態。靜態多態也稱編譯時多態,主要包括模板和重載。而動態多態則是通過類的繼承和虛函數來實現,當基類和子類擁有同名同參同返回的方法,且該方法聲明為虛方法。
當基類對象,指針,引用指向的是派生類的對象的時候,基類對象,指針,引用在調用基類的虛函數,實際上調用的是派生類函數。這就是動態多態。
靜態多態的實現。
靜態多態靠編譯器來實現,簡單來說就是編譯器對原來的函數名進行修飾,在c語言中,函數無法重載,是因為,c編譯器在修飾函數時,只是簡單的在函數名前加上下劃線」_」 ,不過從gcc編譯器編譯之後發現函數名並不會發生變化。
而c++編譯器不同,它根據函數參數的類型,個數來對函數名進行修飾,這就使得函數可以重載,同理,模板也是可以實現的,針對不同類型的實參來產生對應的特化的函數,通過增加修飾,使得不同的類型參數的函數得以區分。
㈨ c++里的類的繼承和多態與java里的繼承和多態的區別是
JAVA和C++都是面向對象語言。也就是說,它們都能夠實現面向對象思想(封裝,繼承,多態)。而由於c++為了照顧大量的C語言使用者, 而兼容了C,使得自身僅僅成為了帶類的C語言,多多少少影響了其面向對象的徹底性!JAVA則是完全的面向對象語言,它句法更清晰,規模更小,更易學。它是在對多種程序設計語言進行了深入細致研究的基礎陸前純上,據棄了其他語言的不足之處,從根本上解決了c++的固有缺陷。 Java和c++的悔則相似之處多於不同之處,但兩種語言問幾處主要的不同使得Java更容易學習,並且編程環境更為簡單。我在這里不能完全列出不同之處,僅列出比較顯著的區別:
1.繼承:
c++支持多重繼承,這是c++的一個特徵,它允許多父類派生一個類。盡管多重繼承功能很早咐強,但使用復雜,而且會引起許多麻煩,編譯程序實現它也很不容易。
java不支持多繼承,而有可能某個類或對象使用分別在幾個類或對象裡面的方法或屬性,現有的單繼承機制就不能滿足要求。與繼承相比,介面有更高的靈活性,因為介面中沒有任何實現的代碼。一個類可以實現多個介面。
2.多態:
c++中多態更容易理解的概念為:允許父類指針或名稱來引用子類對象,或對象方法,而實際調用的方法為對象的類類型方法
java中多態是方法的重寫Overriding和重載Overloading是多態性的不同表現。重寫Overriding是父類與子類之間多態性的一種表現,重載Overloading是一個類中多態性的一種表現。
3.指針:
JAVA語言讓編程者無法找到指針來直接訪問內存無指針,並且增添了自動的內存管理功能,從而有效地防止了c/c++語言中指針操作失誤,如野指針所造成的系統崩潰。但也不是說JAVA沒有指針,虛擬機內部還是使用了指針,只是外人不得使用而已。這有利於Java程序的安全。
㈩ 能用c實現c++所有功能嗎c能實現多態嗎
C 語言是門很強大的時間,從理論上來講,通過加長開發時間,是可以實現現今計算機軟體能達到的所有功能的。
原散纖因:
C 語言是和硬體緊密結合的語言,除了機器語言和匯編語言,它是最靠近硬體級的。
而現今的兩大操作系統 Linux 和 windows 都是用C語言寫的。
所以,如果想完成C++的功能,完全可以通過C語言寫一個類似C++的語言出來,然後空掘知再通過這門語言完成所需功能。
總而言之一句話:別的語言能做到的,C語言一定能做到; C語言能做到的,別的語言不一定能做到。(別的語言不包括機斗消器語言和匯編語言)