根本沒有理由說明C++比C慢。用C編寫的任何程式碼都可以按原樣編譯為C ++,或者進行不影響速度的微小修改(例如,如果使用諸如new或class之類的東西)這是C ++中的保留字,名稱需要更改。
這意味著C ++始終可以至少匹配C以獲得速度。
另一方面,特別是在其歷史早期,許多C ++程式碼的執行速度明顯慢於C語言。基本上,這大部分是歷史性的意外-C ++是第一種被廣泛使用的語言,對物件定向提供了合理的支援,因此“專家”(他們通常只有幾個月的OO經驗)使初學者編寫了嘗試過度泛化的程式碼。 ,因此我們最終得到了(例如)繪製幾何形狀的庫,每個形狀的畫素使用幾個動態分配和虛擬函式呼叫。
不過,我要補充一點,C和C ++之間的許多比較確實像將蘋果與桔子進行了比較。例如,人們通常會比較C和C ++的I / O速度,卻忽略了C ++ iostreams庫固有的急劇增加的靈活性。
僅舉一個顯而易見的例子,考慮一下用C與C ++打印出本地格式數字的程式碼。在C ++中,我會做類似的事情:
std :: cout。imbue(std :: locale(“”)));
std :: cout << 1234567。89;
而我得到的結果類似於1,234,567。89,但是某人將其計算機配置為德語語言環境(例如),則會得到類似的資訊:1。234。567,89。
當然,使用C可以完成相同的工作-localeconv支援它。不幸的是,使用localeconv編寫的程式碼只是花費更長的時間,而且更加複雜。
再強調一遍:C ++ iostream確實增加了有意義的靈活性和實用性。