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

C++兼容性真的很差嗎

開發(fā) 后端
C語言的兼容性要比C++兼容性要好,但是C++遇到的最大問題就是在運(yùn)行某些語法和語義上卻有一些不兼容的地方。

從C語言開發(fā)到C++開發(fā)的技術(shù)人員們沒有想到的是,代碼質(zhì)量上的顯著提高只能通過在程序設(shè)計(jì)風(fēng)格上進(jìn)行改變,對(duì)于C++兼容性問題,一個(gè)變量或者函數(shù)在其被聲明之前是無法使用的。

C++的每一步演化和發(fā)展必須是由于實(shí)際問題所引起的;C++是一門語言,而不是一個(gè)完整的系統(tǒng);不能無休止的一味追求***;C++在其存在的“當(dāng)時(shí)”那個(gè)時(shí)期必須是有用處的;

每一種語言特性必須有一個(gè)有根據(jù)的、明確的實(shí)現(xiàn)方案;總能提供一種變通的方法;能為意欲支持的每一種程序設(shè)計(jì)風(fēng)格提供易于理解的支持方法;不強(qiáng)制于人??梢宰⒁獾?,基本規(guī)則的***三條暗示了兩點(diǎn):

對(duì)適用于真實(shí)世界中各種應(yīng)用的便捷工具的強(qiáng)調(diào);對(duì)程序員的技術(shù)和取向(偏好)的充分考慮。從一開始,C++面向的就是那些要做實(shí)際項(xiàng)目的程序員。所謂的“***”被認(rèn)為是不可能達(dá)到的。

這是由于C++用戶在需求、背景和待解決問題上存在著太大的不同。況且,在一門通用目的的程序設(shè)計(jì)語言的整個(gè)生存期之內(nèi),連對(duì)“***”一詞的詮釋都可能會(huì)有極大的改變。由此可知,在語言的演化過程中,來自用戶的反饋和語言實(shí)現(xiàn)者們積累的經(jīng)驗(yàn)才是最為重要的。

支持良好的設(shè)計(jì)方案;提供用于程序組織的語言設(shè)施;心口如一(Say what you mean);所有的語言特性必須具有切實(shí)有效的承受能力;開啟一個(gè)有用的特性比避免所有的誤用更為重要;

能將獨(dú)立開發(fā)的部件組合成完整的軟件。C++的一個(gè)目標(biāo)就是提供更易用并具有一定承受能力的設(shè)計(jì)思想和程序設(shè)計(jì)技術(shù),進(jìn)一步提高程序的質(zhì)量。這些技術(shù)中的絕大部分都源自Simula [Dahl,1970][Dahl,1972][Birtwistle,1979],并通常被作為面向?qū)ο蟪绦蛟O(shè)計(jì)和面向?qū)ο笤O(shè)計(jì)思想來討論。

然而,C++的設(shè)計(jì)目標(biāo)總還是在于要支持一定范圍內(nèi)的各種程序設(shè)計(jì)風(fēng)格和設(shè)計(jì)思想。這與一般在語言設(shè)計(jì)方面的觀點(diǎn)形成一定對(duì)比。一般在語言設(shè)計(jì)上總是試圖將所有系統(tǒng)內(nèi)建于單獨(dú)一個(gè)被重點(diǎn)支持的、帶有強(qiáng)制性的程序設(shè)計(jì)風(fēng)格之中(或稱典范paradigm)。

與靜態(tài)型別系統(tǒng)(Static type system)沒有內(nèi)在的沖突;像對(duì)內(nèi)建(built-in)型別一樣對(duì)用戶自定義型別提供很好的支持;個(gè)異化(locality)行為是可取的;避免產(chǎn)生順序上的依賴關(guān)系;在對(duì)語言產(chǎn)生疑惑時(shí),可以選取其特性中最易掌握的部分;

當(dāng)然,這些規(guī)則要具體結(jié)合更多關(guān)于基本目標(biāo)的上下文環(huán)境來考慮。應(yīng)該注意到的是,在“與C有較高的兼容性”、“不損失效率”以及“具有便捷的可用性來解決實(shí)際問題”這三個(gè)方面的要求,與在“完整的型別安全性”、“完全的通用性”以及“完善的抽象之美”這三個(gè)方面的要求形成對(duì)立。

C++從Simula中借鑒了用戶自定義型別(class,§4.1)和類層次機(jī)制。然而,在Simula及許多類似的語言中,其對(duì)用戶自定義型別的支持與其對(duì)內(nèi)建型別的支持存在著根本上的不同。例如,Simula中不允許在棧中為用戶自定義型別的對(duì)象分配空間,并且只允許通過指針(這在Simula中稱為引用——reference)來對(duì)這些對(duì)象進(jìn)行訪問。而相反的,內(nèi)建型別的對(duì)象只在棧中被分配空間,不能在動(dòng)態(tài)存儲(chǔ)區(qū)中分配,而且不能使用指針指向它。

這種在對(duì)待內(nèi)建型別與對(duì)待用戶自定義型別上的差異,暗示著對(duì)效率問題的嚴(yán)格考慮。比如,當(dāng)作為一個(gè)在動(dòng)態(tài)存儲(chǔ)區(qū)中被分配的對(duì)象之引用時(shí),如果該對(duì)象屬于自定義型別(比如complex,§4.1),那么就會(huì)為運(yùn)行期及空間帶來負(fù)荷;

而這些負(fù)荷在有些應(yīng)用中被認(rèn)為是不可接受的。這些正是C++兼容性解決的問題。同時(shí),在用法上的不同也決定了:不可能在范型程序設(shè)計(jì)中統(tǒng)一對(duì)待那些語義上近似的型別。

在維護(hù)一個(gè)較龐大的程序時(shí),一個(gè)程序員不可避免的會(huì)基于某些不完整的知識(shí)來對(duì)程序作一些修改,只關(guān)注全部程序代碼中的一小部分?;诖耍?FONT size=+0>C++提供了class(§4)namespace(§5.2)和訪問控制(§4.1),使設(shè)計(jì)決策的各異化(locality)成為可能。

在基于一趟編譯(one-pass compilation)的語言中,某些順序上的依賴性是不可避免的。例如C++兼容,一個(gè)變量或者函數(shù)在其被聲明之前是無法使用的。然而,C++中類成員的名字規(guī)則和重載解析(overload resolution)的規(guī)則還是在獨(dú)立于聲明順序的原則下被制定出來,以便將發(fā)生混亂和錯(cuò)誤的可能性降至***。

【編輯推薦】

  1. 簡(jiǎn)介學(xué)習(xí)C++總結(jié)之談
  2. 對(duì)C++庫函數(shù)進(jìn)行學(xué)習(xí)探索總結(jié)筆記
  3. C++類庫設(shè)計(jì)的基本構(gòu)思與方法
  4. C++語言真的還有市場(chǎng)價(jià)值?
  5. C++類庫設(shè)計(jì)的基本構(gòu)思與方法
責(zé)任編輯:chenqingxiang 來源: 速途網(wǎng)
相關(guān)推薦

2010-01-20 10:14:53

C++程序

2013-03-20 18:14:35

架構(gòu)架構(gòu)設(shè)計(jì)項(xiàng)目

2023-04-17 19:43:54

兼容性測(cè)試軟件測(cè)試

2009-08-17 10:22:19

C# Windows

2022-08-22 15:32:59

C++C代碼

2009-03-07 09:49:07

Windows 7兼容性

2010-02-23 16:21:24

Python Win

2010-03-02 17:22:46

Android技術(shù)

2016-04-21 09:43:33

編程音樂

2010-01-26 09:24:53

C++語言

2010-01-15 16:45:35

C++語言

2010-01-21 10:23:53

C++代碼

2023-03-24 07:31:58

Oracle兼容性產(chǎn)品

2021-12-27 16:22:19

鴻蒙HarmonyOS應(yīng)用

2011-08-16 15:17:44

IOS SDK

2010-03-05 17:09:18

2021-08-31 10:52:30

容量背包物品

2010-01-20 17:23:03

C++編程語言

2010-01-14 10:34:02

C++語言

2011-10-18 10:34:53

ibmdwSQLCLPPlus
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)