成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C++類庫設計的原理和設計技巧

開發 后端
學習C++類庫時的一個重要思想:這是一個價值觀問題,于是下面提出三條標準:簡單,高性能,可移植,希望大家學習。

前些日子微軟推出了Visual Studio系列的C++類庫和GNU陣營的壓軸產品gc中的g++,這可大大的使編程人員和一些搞開發的人興奮不已,對于C++類庫的設計開發者來說,保持C++的高性能是一個重要目標。

我們在開篇就對簡單性目標作了敘述,這里再稍微展開討論一下。我們提出的簡單標準,首先是外部接口簡單,其次是內部結構簡單。我們知道,類庫是提供給上層應用程序使用的,也就是按照一定的接口規范,向上層提供一定的功能服務。

接口設計得越簡單,對上層用戶來說就越方便,就越不容易產生Bug。我們可以注意到,流行的成功類庫都是擁有簡單接口的。為了使接口簡單,常常不得不把有關具體實現的復雜性封裝于類庫內部,也就是說,關于簡單性的設計原則,外部接口簡單優先于內部實現簡單。

高性能是C++語言優于其它OO語言的一個特性。C++的高性能應該首先歸于它運行模式,和大多數OO語言不同,C++程序編譯后直接產生本地平臺代碼(Native Code),理論上具備了可能的最大執行性能。另外的一個原因是主流的C++編譯器都被設計得非常精巧,具有優越的代碼優化能力。#t#

對于C++類庫設計者來說,保持C++的高性能是一個重要目標。程序的高性能可以從兩方面來評價,一是時間性能,以盡量短的時間來解決盡量多的業務;二是資源性能,以盡量少的資源消耗,包括CPU使用、內存占用、網絡流量、磁盤空間等等,來維持正常的程序功能。提高性能的主要手段是數據結構、算法和程序體現結構的優化設計000-861 117-102 。

再說可移植性。C++的編譯后輸出代碼是本地平臺代碼,因此C++本身不具有目標代碼可移植性,C++的可移植性只能是源代碼可移植性。源代碼的可移植性是指,同一軟件產品的全部或者部分源代碼可以在不同的編譯環境中進行編譯(不需要編譯的除外)。

并且其結果具有相同的品質特性(依優先順序包括功能性、可靠性、可用性、性能性、可維護性等)。編譯環境可以大致分為三個層次,最底層的是操作系統,也就是平臺(Platform),其次是對源代碼直接進行處理的編譯器,然后是其它在編譯過程中必需的中間件物品。

如庫文件等。我們知道C++雖然在語言規范上獲得了統一(ISO/IEC),其編譯器卻是群雄割據的局面,具有代表性的有Borland C++系列(已經淡出市場),Microsoft的Visual Studio系列的C++類庫和GNU陣營的壓軸產品gc中的g++。

源代碼經編譯環境處理后產生的可執行代碼的執行平臺稱為目標平臺,不同的編譯器的目標平臺也不同,有的支持多平臺,如g++,有的是單一平臺,如Visual C++。對于類庫設計者來說。

想要獲得完全的可移植性是非常困難的(除非是象STL這樣被納入語言規范的類庫,因為不支持STL就是不支持標準的C++。即便如此不同的編譯環境還是存在不同的STL實現版本,造成“一個類庫多個實現”的局面),我們只能有選擇地支持一部分環境。我們在開篇就已經說明,我們選擇g++和Visual C++編譯器,選擇Linux和Windows 32位目標平臺。

想要獲得完全的可移植性是非常困難的(除非是象STL這樣被納入語言規范的類庫,因為不支持STL就是不支持標準的C++。即便如此不同的編譯環境還是存在不同的STL實現版本,造成“一個類庫多個實現”的局面),我們只能有選擇地支持一部分環境。我們在開篇就已經說明,我們選擇g++和Visual C++編譯器,選擇Linux和Windows 32位目標平臺。

一個解決辦法是將庫文件保持在源代碼形態(包括頭文件和源文件),而不編譯成二進制文件。比如STL的許多實現版本都是以頭文件形式存在。這樣雖然解決了名稱裝飾所帶來的不可移植問題,但同時又會帶來代碼編譯時間增長,源代碼完全公開等問題。在C++的名稱裝飾規則未被統一之前,看起來這個問題是很難兩全其美地解決了。

在本系列中,我們也仿照g++STL實現方式,完全以頭文件形式來編寫類庫。為什么不把代碼放到源文件中去呢?主要原因是,頭文件只需要用戶使用包含指令(#include)就可以處理了,而源文件則需要配置到用戶工程的編譯目標列表中,和用戶的源程序形成共同編譯的形式,破壞了用戶工程的編譯目標的封閉性,比較麻煩而且不符合軟件開發的一般習慣。

【編輯推薦】

  1. 簡介學習C++總結之談
  2. 對C++庫函數進行學習探索總結筆記
  3. C++類庫設計的基本構思與方法
  4. C++語言真的還有市場價值?
  5. C++類庫設計的基本構思與方法
責任編輯:chenqingxiang 來源: 機械工業出版社
相關推薦

2010-01-15 19:49:04

C++類庫

2010-01-15 19:49:04

C++類庫

2012-06-05 09:39:16

Facebook

2010-01-27 14:24:15

C++程序設計

2021-05-28 18:12:51

C++設計

2024-01-22 00:10:00

C++接口編程

2010-01-11 17:34:37

C++語言

2010-01-25 10:54:18

C++設計

2010-01-26 13:36:27

C++設計

2011-03-10 11:17:03

數據庫設計技巧

2018-11-23 11:22:02

UI柵格設計網頁設計

2010-01-19 18:04:02

C++標準程序庫

2010-01-28 10:01:28

C++的設計原則

2011-05-31 17:59:48

C++

2010-01-21 16:45:02

C++設計目標

2011-04-11 09:23:27

設計目標原則C++

2010-01-21 11:03:07

C++庫

2019-07-08 14:33:25

資訊類APPAPP界面設計

2010-01-22 10:36:25

C++語言

2010-01-25 11:13:18

C++棧對象
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天天天天操 | 国产高清在线观看 | 美女爽到呻吟久久久久 | 久久久爽爽爽美女图片 | 久草久草久草 | 天天综合久久 | 91婷婷韩国欧美一区二区 | 91精品国产91久久久久久最新 | 91精品久久久久久久久中文字幕 | 精品国产免费一区二区三区五区 | 91高清免费观看 | 国产高清免费在线 | 日本三级全黄三级a | av免费网址 | 国产精品一区二区av | 91精品国产777在线观看 | 欧美黄色一级毛片 | 小早川怜子xxxxaⅴ在线 | 日韩色视频 | 精品久久久久久久久久久久久 | 国产精品久久国产精品 | 99久久精品一区二区毛片吞精 | 中文字幕不卡在线观看 | 国产激情小视频 | 欧美国产91 | 久久天天躁狠狠躁夜夜躁2014 | 久久久黑人 | 99色综合 | 蜜桃av一区二区三区 | 久久国内精品 | 中文字幕视频在线观看 | 久久久久综合 | 在线精品一区二区三区 | 久草福利| 精品国产三级 | 国产精品乱码一区二三区小蝌蚪 | 精品欧美色视频网站在线观看 | 色婷婷综合久久久中字幕精品久久 | 亚洲男人天堂网 | 久久综合一区二区 | 色综合久久天天综合网 |