- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
范例伫列抽象型态资讯工程系
Chapter 7: 再論類別 7.1 簡介 第六章到第八章討論的是屬於物件導向程式設計的基本觀念。 第九章與第十章討論的繼承(inheritance)與多型(polymorphism),這才算是真正物件導向程式設計。 7.2 const (常數) 物件與 const 成員函式 最小開放權限原則 Principle of least privilege 只給物件所需要的權限、不給過多的權力 關鍵字 const 說明這個物件不可以被修改 企圖修改這種物件的話會造成語法上的錯誤。 範例 const Time noon( 12, 0, 0 ); //可以作初值化 宣告類別 Time 的常數物件 noon,並作初值化成 12 點。 7.2 const (常數) 物件與 const 成員函式 const 物件需要 const 函式 我們只能呼叫 const 物件的 const 函式。沒有修改資料成員的函式必須被宣告成 const 才能被 const 物件使用。 宣告成 const 的成員函式不可修改物件內容 const 必須被寫在函式原型與定義的地方 函式原型: ReturnType FunctionName(param1,param2…) const; 定義: ReturnType FunctionName(param1,param2…) const { …} 範例: int A::getValue() const { return privateDataMember }; const 函式可以傳回資料成員的值,但不能修改其內容。 7.2 const (常數) 物件與 const 成員函式 建構子/解構子不可宣告為 const 對變數作初值化、就會修改其內容 常見的程式設計錯誤 7.1-4 定義為 const 的成員函式若修改資料成員的內容,會造成語法錯誤。 const 的函式不可呼叫 non-const 函式,否則就造成語法錯誤。 透過 const 物件來呼叫非 const 函式,是語法錯誤。 企圖將建構子或解構子宣告為 const 是語法錯誤。 7.2 const (常數) 物件與 const 成員函式 前面介紹的是 const 物件、const 函式,下面討論 const 資料成員,要怎麼作呢? 一個 const 變數只能在宣告時順便作初值化,宣告後就不能再改變它的內容了。但是類別中的資料成員在宣告時不能給初值,這怎麼辦呢? 下面的例子中 Increment 這個類別中有一個 increment 的 const 資料成員,其初值化必須在建構子作,寫法如下: Increment 的建構子寫法如下: Increment::Increment( int c, int i ) :increment( i ) { count = c; } : increment(?i?) 將 increment 的初值設為 i 7.3 合成:將物件當作類別的成員 合成 composition Class has objects of other classes as members,即有其他物件為成員的類別 這種方式是最自然地再使用的作法。 例如員工資料中,有生日、聘用日期等,這些日期資料可以直接使用「日期」的物件。 物件的建構 construction of objects 成員物件按照宣告順序來建構(產生) 而不是照建構子的成員初值設定順序 Constructed before their enclosing class objects (host objects) ,小物件先建構(產生),這是物件的建構順序;而解構順序與此顛倒。 7.3 合成:將物件當作類別的成員 當類別中有其他類別的成員時,一定要有預設的建構子。 兩個類別的 print() 函式都是 const,不需要改變資料成員的函式最好都設為 const。且這兩個 print 都沒有 augments。 firstName 與 lastName 兩個字串長度都是 25,比較浪費空間,而且若輸入長度超過 25 的字串時,會被切掉。後面使用動態記憶體管理時,可以改善這些情形。 7.4 夥伴(friend)函式和夥伴類別 friend 函式與 friend 類別 可以存取其他類別宣告在 private 或 protected 裡面的資料 friend 函式不是類別的成員函式,所以存取其 資料成員的方式不同。 定義在類別範圍之外 朋友關係的性質 Properties of friendship 朋友關係只能他人授權、而非自行取得 非對稱 (若 B 是 A 的朋友,A 未必就是 B 的朋友) 沒有遞移性(若 A 是 B 的朋友、 B 是 C 的朋友,A
您可能关注的文档
最近下载
- the-new-age-of-invention高一英语新外研版必修三unit3课件.pptx VIP
- (2025)呼伦贝尔市入团积极分子考试题库(含答案).docx VIP
- HG∕T 5677-2020 石油炼制行业绿色工厂评价要求.pdf VIP
- 《基于三菱FX2N控制系统的自动剥线机设计》9500字(论文) .pdf
- 奔驰500系列发动机操作手册.pdf VIP
- 天津大学学生宿舍文明住宿承诺书.DOC VIP
- 2025年中国半乳甘露聚糖项目创业计划书.docx
- The new age of invention课件新外研版必修三unit3.pdf VIP
- 2024辽宁中考数学二轮专题复习 微专题 遇到角平分线如何添加辅助线(课件).pptx VIP
- xx集团粮食仓储及加工基地可行性研究报告.docx
文档评论(0)