亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

一個 C++ 日期類(第一部分)

2019-11-17 05:31:05
字體:
來源:轉載
供稿:網友

原文出處:Code Capsules:A C++ Date Class, Part 1

本文適合初級讀者

  ChUCk Allison 是鹽湖城圣 Latter Day 教堂總部下耶穌教堂家族歷史研究處的軟件體系設計師。他擁有數學學士和數學碩士學位。他從1975年起開始編程,從1984年起他開始從事c語言的教學和開發。他目前的愛好是面向對象的技術及其教育。他是X3J16,ANSI C ++標準化委員會的一員。發送e-mail 到 allison@decus.org,或者撥打電話到 (801)240-4510 均可以與他取得聯系。
  上個月的專欄里介紹了一個日期間隔函數,它可以算出任意兩個日期之間的年,月和日。這個月的專欄則提出了一個用C++解決該問題的方法。這種方法的本質是創建一種新的數據類型,這種數據類型的行為就像內建的數據類型一樣。換句話說,你要從基于函數的方法 (“我想要怎么樣做事”)轉換到基于對象的方法(“我的問題的原理和對象是什么”)。使用C++非常需要另外一種思考問題的方法。為了實現這個轉換,首先要先知道為什么會有C++存在。

關于兩種語言的故事

  C++源自80年代早期 AT&T 的 Bjarne Stroustrup 提出的“帶類的 C”。他那時正在尋求在 Simula-67 中更快的進行仿真的方法。"class"是 Simula 中用來指用戶自己定義的類型的術語,能夠定義出非常接近現實的對象,這是進行良好的仿真的要害。有沒有一種更好的方法,能夠比在c語言--最快的過程化語言中加入"class"的概念更快的進行仿真呢?
  選擇C為類提供了一個不僅有效而且靈活的工具。雖然一些其他的語言在C++之前很久就支持通過類來對數據進行抽象,但是C++用的最廣泛。幾乎每一種主要的具有C語言編譯器的平臺同樣能夠支持C++。最后我還聽說,C++的用戶群每七個月就會翻一番。
  對C++的最初了解是令人吃驚的。假如你是從C語言轉過來的話,你需要把下面這些詞語加進你的詞匯表:抽象類,存取控制,基類,catch子句,類,類的作用域,構造函數,拷貝構造函數,缺省參數,缺省構造函數,delete運算符,派生類,析構函數,異常,異常處理,友元,繼續,內聯函數,操作符,成員函數,多重繼續,嵌套類,new處理函數,new操作符,重載,成員指針,多態,私有,保護,公有,純虛函數,引用,靜態成員,流,模板,this指針,try塊,類型安全連接,虛基類,虛函數。
  一個好消息說C++是一種強大的、有效的、面向對象的、能夠處理各種復雜應用的語言。壞消息則是這種語言本身就比較復雜,比C語言難把握。C語言是造成這一問題的一部分。C++是一個混血兒,既有面向對象的特征,又有通用系統編程語言的特征。我們不可能純粹介紹C++這一系列豐富的新特征而不一點也不考慮C語言本身。對C的兼容性是C++設計時的一個主要目標。正如Bjarne在ANSI C++委員會上所陳述的那樣,C++是一種"工程上的折衷",它"要和C語言盡可能的接近,但又不能太接近"。到底要多接近現在還在研究中。

一個漸進的過程

  你可以很有效的使用C++而不需要把握它的全部。事實上,面向對象的技術承諾說只要開發商做好他們的事情(提供設計良好的、可重用并且可擴展的類庫),那么你就可以很輕易的開發你的應用程序。目前的產品,比如Borland公司的應用編程接口,在許多方面都證實了這一點。
假如你覺得你必須把握這門語言,你可以循序漸進并且在這個過程中繼續開發你的應用程序。這里有三個必須把握的地方:
  1. 一個更好的C語言
  2. 數據抽象
  3. 面向對象的編程
  你可以把C++當成一門更好的C語言來使用,因為它更安全更富于表現力。與這一點相關的特征有:類型安全連接,強制函數原型,內聯函數,const限定詞(是的,ANSI C從C++中借鑒的這個詞),函數重載,缺省參數,引用和語言提供的對動態內存治理的支持。你同樣需要當心這兩種語言不兼容的地方。C語言中有一個強大的子集,Plum 和 Saks 稱其做"類型安全的 C"(參見 C++ PRogramming Guidelines, Plum and Saks, Plum-Hall, 1992)。
  正如我在這篇文章和下一篇文章中所陳述的一樣,C++支持數據抽象--用戶可以自己定義行為與內建類型相像的數據類型,這種數據抽象機制包括:類,存取限制,構造和析構函數,運算符重載,模板和異常處理。
  面向對象的程序設計通過探求類與類之間的關系在數據抽象上更進一步。其中兩個要害的概念是繼續(通過聲明一個新類與另一個類的相似與區別定義它,其中的相似被重用)和多態(為一族相關的操作提供同一個接口,運行時識別)。C++分別通過類的派生和虛汗數來支持繼續和多態。




  一個類就是一個擴展的struct。除了定義數據成員,你還可以為其添加成員函數。日期類的定義在文件data.h中的 Listing 1。它與上個月的C版本不同,因為在這里interval函數是一個成員函數而不是全局函數。Date::interval()的實現在 Listing 2 中。"::"叫做作用域運算符。它告訴編譯器interval函數是Date類的成員函數。interval函數原型中的"&"說明這個函數的參數由應用傳遞(參見關于引用的選項)。Listing 3 中的程序展示了如何使用這個日期類。你必須使用結構成員的語法來調用 Date:: interval():result = d1.interval (d2);   Date作為類型標識符,就像系統內建類型一樣的發揮作用(例如,你可以定義Date的對象而不使用struct要害字)。永遠也不必做如下的定義:typedef struct Date Date;   事實上,類的概念是如此的基本,以至于C++已經將結構標簽和普通的標識符結合成一個獨立的名字空間。
  注重我已經將isleap定義成了一個內聯函數(在C版本中它是一個宏)。內聯函數像宏一樣將代碼展開,但它也像普通函數一樣進行作用閾和類型的檢查。除非你要使用the stringizing or token-pasting Operations of the preprocessor,,否則在C++中不需要使用 function-like 的宏?,F在考慮 Listing 2 中的這個聲明:years = d2.year - year;year指的是什么對象?在C版本中,這個聲明如下:years = d2.year - d1.year;   既然成員函數的調用總是與對象相關聯(例如,d1. interval (d2)),因此當成員函數沒有前綴修飾的時候,通常是相關聯對象的成員(在這里,year 指的是d1.year)。this要害字代表一個指向潛在對象的指針,因此我可以做一個更加明確的聲明:years = d2.year - this->year;但是這種用法很少。 在 Listing 4 中,我在類的定義中添加了如下的聲明:Date();Date(int,int,int);   這是一種非凡的成員函數叫做構造函數。構造函數答應你在一個對象被創建的時候指定怎么樣初始化這個對象。當你定義一個沒有初始值的日期對象時,首先調用缺省構造函數(因為它沒有任何參數):Date d;下面的聲明調用第二個構造函數:Date d(10,1,51);   當成員函數的實現比較簡單的時候,你可以把它們的實現移到類的定義里面去,使它們成為內聯函數(參見 Listing 7 ——不要忘記在 Listing 5 中移走它們)。Listing 6 中的測試程序推遲構造對象d1、 d2 和 result 直到需要它們的時候(在C++中,對象的定義可以出現在任何聲明中)。
  我幾乎已經列舉了數據抽象,也就是封裝的主要特征。當一個用戶自定義類型的內部表現和外部接口設計良好,就叫做一個封裝。我確實定義了一個和系統內建類型一樣作用的新類型,我不答應任何無意間的對它的內部表現的訪問制。例如,像這樣,用戶可以執行如下的語句:[1] [2]
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线观看欧美成人| 亚洲精品第一页| 国产欧美一区二区白浆黑人| 国产亚洲精品久久久| 最近2019年好看中文字幕视频| 日本一本a高清免费不卡| 九九热这里只有在线精品视| 国产网站欧美日韩免费精品在线观看| 国产午夜精品视频免费不卡69堂| 亚洲精品永久免费精品| 久久精品久久久久| 欧美性猛交xxxx黑人猛交| 亚洲最大福利视频| 亚洲电影免费观看高清完整版在线观看| 国产亚洲欧美视频| 国产一区二区日韩精品欧美精品| 91九色精品视频| 最新国产成人av网站网址麻豆| 久久精品免费电影| 国产福利成人在线| 国产精品稀缺呦系列在线| 亚洲欧美色图片| 中文字幕精品久久| 色综合天天狠天天透天天伊人| 98精品在线视频| 亚洲第一精品电影| 97在线精品国自产拍中文| 在线成人一区二区| 亚洲天堂av在线播放| 国产精品久久久久久久久久久久久| 亚洲人成在线免费观看| 成人黄色av免费在线观看| 国产一区二区三区三区在线观看| 国产成人avxxxxx在线看| 日韩一区二区精品视频| 亚洲人成网7777777国产| 日韩小视频网址| 国产精品视频网址| 日韩高清av一区二区三区| 大桥未久av一区二区三区| 日韩中文字幕网| 久久精品国产v日韩v亚洲| 国产一区二区三区四区福利| 在线观看中文字幕亚洲| 欧美成人免费小视频| www.久久久久| 久热精品视频在线观看| 永久免费毛片在线播放不卡| 中文字幕精品久久久久| 亚洲日韩欧美视频一区| 日韩视频在线一区| 国产精品视频yy9099| 国语自产精品视频在线看抢先版图片| 国产精品999999| 午夜精品福利在线观看| 成人av在线天堂| 日本精品中文字幕| 久久亚洲国产精品成人av秋霞| 亚洲成年人影院在线| 亚洲精品影视在线观看| 国产日韩精品电影| 国产精品极品美女在线观看免费| 亚洲精品欧美一区二区三区| 欧美一区二区三区图| 国产视频精品免费播放| 91精品国产自产在线老师啪| 国产精品九九久久久久久久| 国产精品亚洲美女av网站| 亚洲精品美女在线| 久久伊人免费视频| 国产日韩欧美日韩| 久久精品国产亚洲精品| 美日韩在线视频| 日韩av日韩在线观看| 日韩美女主播视频| 亚洲成人aaa| 中文字幕亚洲专区| 亚洲精品福利在线| 主播福利视频一区| 欧美日韩第一页| 亚洲第一级黄色片| 久久久av电影| 欧美日韩精品二区| 国产精品永久免费在线| 中文欧美日本在线资源| 亚洲高清一二三区| 欧美一区在线直播| 亚洲精品不卡在线| 久久免费国产精品1| 成人av资源在线播放| 欧美在线日韩在线| 91久久夜色精品国产网站| 国产精品v日韩精品| 亚洲美女动态图120秒| 正在播放亚洲1区| 国产一区二区三区中文| 国语自产精品视频在线看抢先版图片| 亚洲激情 国产| 亚洲人成在线观| www.久久久久| 亚洲第一福利视频| 亚洲精品久久久久久久久久久久| 美女啪啪无遮挡免费久久网站| 中文在线资源观看视频网站免费不卡| 亚洲国产成人在线视频| 国产精品亚洲美女av网站| 91精品国产91久久久久久| 91亚洲国产精品| 久久久久国产精品免费网站| 日本精品一区二区三区在线播放视频| 亚洲国产精品久久久久秋霞蜜臀| 亚洲丝袜av一区| 欧美床上激情在线观看| 疯狂欧美牲乱大交777| 日韩美女免费线视频| 国产99久久精品一区二区| 4k岛国日韩精品**专区| 隔壁老王国产在线精品| 国产一区二区三区直播精品电影| 欧美一级淫片播放口| 欧美在线一区二区三区四| 国产精品综合久久久| 亚洲欧美成人精品| 91免费看片在线| 亚洲大胆美女视频| 国产香蕉一区二区三区在线视频| 国产一区二区视频在线观看| 亚洲第一中文字幕在线观看| 神马久久桃色视频| 亚洲福利在线观看| 91国内精品久久| 亚洲在线视频福利| 91网站免费观看| 久久精品免费播放| 欧美日韩中文字幕日韩欧美| 亚洲bt欧美bt日本bt| 欧美午夜女人视频在线| 欧美韩日一区二区| 国产精品a久久久久久| 亚洲女性裸体视频| 国产精品青青在线观看爽香蕉| 国产精品成人久久久久| 国产日韩在线看片| 欧美性jizz18性欧美| 欧美肥老太性生活视频| 日韩美女主播视频| 性欧美亚洲xxxx乳在线观看| 欧美视频不卡中文| 日韩在线视频免费观看高清中文| 国产欧美va欧美va香蕉在| 超在线视频97| 欧美成人精品不卡视频在线观看| 久久久久久美女| 国产成人一区二区三区电影| 国产精品久久久久久久9999| 亚洲精品久久久久中文字幕欢迎你| 在线观看亚洲视频| 欧美日韩国产在线| 色悠久久久久综合先锋影音下载| 久久成年人免费电影| 国产精品视频不卡| 国产精品美女在线观看| 国产精品亚洲аv天堂网| 亚洲香蕉成视频在线观看|