c++面向?qū)ο蟪绦蛟O(shè)計(jì)
《c++面向?qū)ο蟪绦蛟O(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《c++面向?qū)ο蟪绦蛟O(shè)計(jì)(407頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
面向?qū)ο蟮脑O(shè)計(jì)思想 面向?qū)ο蟮乃枷胱畛醭霈F(xiàn)于挪威奧斯陸大學(xué)和挪威計(jì)算機(jī)中心共同研制的 7語言中 , 隨著的0語言推出 , 面向?qū)ο蟮牡某绦蛟O(shè)計(jì)方法得到了比較完善的實(shí)現(xiàn) 。 此后 , 面向?qū)ο蟮母拍詈蛻?yīng)用已超越了程序設(shè)計(jì)和軟件開發(fā) , 擴(kuò)展到如數(shù)據(jù)庫系統(tǒng) , 交互式界面 , 分布式系統(tǒng) , 網(wǎng)絡(luò)管理結(jié)構(gòu)和人工智能等領(lǐng)域 。 面向?qū)ο蟮陌l(fā)展 面向?qū)ο笏枷?數(shù)據(jù)抽象 一種設(shè)計(jì)方法 把一組數(shù)據(jù)及作用與其上的操作組成一個(gè)設(shè)計(jì)實(shí)體或單位。接口說明外部可見,其實(shí)現(xiàn)是隱蔽的,不可見的。 發(fā)展的三個(gè)階段 01010101 100100 用戶 定義 抽象數(shù) 據(jù)類型 面向?qū)ο笏枷?抽象數(shù)據(jù)類型 抽象數(shù)據(jù)類型是指“一個(gè)值集和作用在該值集上的操作集”。抽象數(shù)據(jù)類型的定義只決定于其邏輯特性,與其具體的計(jì)算機(jī)內(nèi)部實(shí)現(xiàn)無關(guān)。一個(gè)抽象數(shù)據(jù)類型可以分解為語法、語義、表示和算法 4個(gè)部分。 功能抽象 模塊 數(shù)據(jù)抽象 模塊 面向?qū)ο笏枷?抽象數(shù)據(jù)類型的實(shí)現(xiàn) 實(shí)現(xiàn)抽象數(shù)據(jù)類型需要借助于高級(jí)程序設(shè)計(jì)語言 ; 在面向過程的語言中,用戶可以自己定義數(shù)據(jù)類型 ; 在面向?qū)ο蟮某绦蛟O(shè)計(jì)語言中,借助于對(duì)象描述抽象數(shù)據(jù)類型。 (面向?qū)ο笏枷?問題求解 面向?qū)ο笤O(shè)計(jì)方法:實(shí)現(xiàn)問題空間和問題求解空間的近似和直接模擬。 意識(shí)部分 教室 物質(zhì)部分 303教室 抽象部分 教室類 具體部分 一個(gè)對(duì)象:教室實(shí)例 現(xiàn)實(shí)問題空間 解空間 面向?qū)ο蟮奶攸c(diǎn) 封裝機(jī)制 基于消息的通信 繼承機(jī)制 多態(tài)機(jī)制 理解面向?qū)ο蟮幕靖拍顚?duì)于學(xué)習(xí)和掌握面向?qū)ο蟮拈_發(fā)方法是十分重要的。 面向?qū)ο蟮幕靖拍?類 ( 對(duì)象 (實(shí)例 (多態(tài)性 (繼承 ( 消息 (封裝 (面向?qū)ο蟮氖澜缬^ 把客觀世界從概念上看成是一個(gè)由相互配合而協(xié)作的對(duì)象所組成的系統(tǒng) 面向?qū)ο?=對(duì)象 +分類 +繼承 +通信 一個(gè)實(shí)例 椅子 對(duì)象:桌子 價(jià)格 尺寸 重量 位置 顏色 類:家具 對(duì)象:椅子 一個(gè)面向?qū)ο蟮膶?shí)例 椅子 價(jià)格 尺寸 重量 位置 顏色 買 賣 移動(dòng) 買 賣 移動(dòng) 買 賣 移動(dòng) 價(jià)格 尺寸 重量 位置 顏色 對(duì)象 對(duì)象 (對(duì)象是用來描述客觀存在的事物,它是構(gòu)成系統(tǒng)的基本單位,是對(duì)客觀世界中事物的抽象描述。 對(duì)象 行為(功能、方法、服務(wù)) 屬性(數(shù)據(jù)) 屬性 行為 接口 對(duì)象 對(duì)象 對(duì)象 面向?qū)ο蟮幕靖拍?對(duì)象是由私有數(shù)據(jù)(屬性)及作用于其上的一組操作(行為)所構(gòu)成的一個(gè)封閉整體 由于對(duì)象的數(shù)據(jù)是私有的,所以要想訪問其數(shù)據(jù)的正確方法是向該對(duì)象發(fā)送消息,讓對(duì)象自身選擇其內(nèi)部相應(yīng)的操作以完成對(duì)該項(xiàng)數(shù)據(jù)的訪問 對(duì)象的動(dòng)作取決于外界給對(duì)象的刺激,這就是消息,消息告訴對(duì)象所要求它完成的功能。對(duì)象具有一定的智能功能,即“知道”如何選擇相應(yīng)的操作來處理對(duì)象所接收的消息 從設(shè)計(jì)人員的角度看,對(duì)象是一個(gè)完成特定功能的程序塊 從用戶的角度看,對(duì)象為他們提供了所希望的行為 面向?qū)ο蟮幕靖拍?對(duì)象 (對(duì)象標(biāo)識(shí) 對(duì)象生命周期 面向?qū)ο蟮幕靖拍?類 ( 類 又稱 對(duì)象類 ( , 是 一組具有相同屬性和相同操作的對(duì)象的集合 。 在一個(gè)類中 , 每個(gè)對(duì)象都是類的 實(shí)例 (,它們都可以使用類中提供的函數(shù) 。 類具有屬性 , 用數(shù)據(jù)結(jié)構(gòu)來描述類的屬性 , 類具有操作 , 它是對(duì)象的行為的抽象 , 操作實(shí)現(xiàn)的過程稱為方法 ( , 方法有方法名 , 方法體和參數(shù) 。 由于對(duì)象是類的實(shí)例,在進(jìn)行分析和設(shè)計(jì)時(shí),通常把注意力集中在類上,而不是具體的對(duì)象上。 幾何對(duì)象 顏色 位置 移動(dòng)( 矢量) 選擇( P:指針型) :布爾型 旋轉(zhuǎn) (角度 ) 圖 1 對(duì)象類的描述 人 姓 名 :字符串 年 齡 : 整 型 改換工作 改換地址 文件 文件名 文件大小 最近更新日期 打印 (人 ) 張紅兵 28 繪圖員 人民路 8號(hào) (人 ) 李軍 24 程序員 無 圖 2 對(duì)象的描述 對(duì)象和類的描述 類和 對(duì)象一般采用 “ 名字 ” 、 屬性 ” 和 運(yùn)算 ” 來描述 。 類名 屬性 運(yùn)算 對(duì)象 類 屬于某類的具體對(duì)象就是該類的 實(shí)例 。 一個(gè)類的不同實(shí)例必定具有: 相同的操作(或行為)的集合 相同的信息結(jié)構(gòu)或?qū)傩远x,但可以有不同的屬性值 不同的對(duì)象標(biāo)識(shí) 面向?qū)ο蟮幕靖拍?面向?qū)ο蟮幕靖拍?消息 (對(duì)象之間的聯(lián)系是通過傳遞消息來實(shí)現(xiàn)的。 消息 就是向?qū)ο蟀l(fā)出的服務(wù)請(qǐng)求(互相聯(lián)系、協(xié)同工作等)。 是對(duì)象之間進(jìn)行通訊的一種數(shù)據(jù)結(jié)構(gòu)。 消息統(tǒng)一了“數(shù)據(jù)流”和“控制流”。 數(shù)據(jù) 方法 消息到達(dá) 面向?qū)ο蟮幕靖拍?消息 - 消息傳送與函數(shù)調(diào)用的區(qū)別 ( 1)函數(shù)調(diào)用可以帶或不帶參數(shù),但是消息至少帶一個(gè)參數(shù),它表明接收該消息的對(duì)象,消息中告訴對(duì)象做什么的部分稱為消息操作; ( 2)消息操作名類似于函數(shù)名,其本質(zhì)區(qū)別在于:函數(shù)名代表一段可執(zhí)行的代碼,但消息操作名具體功能的選定還取決于接收消息的對(duì)象本身 ( 3)函數(shù)調(diào)用是過程式的(如何做),消息傳送是說明式的(做什么),具體如何做,由對(duì)象根據(jù)收到的消息自行確定。 繼承 ( 繼承是使用現(xiàn)存的定義作為基礎(chǔ) , 建立新定義的技術(shù) 。 是父類和子類之間共享數(shù)據(jù)結(jié)構(gòu)和方法的機(jī)制 ,這是類之間的一種關(guān)系 。 繼承性分: 單重繼承: 一個(gè)子類只有一個(gè)父類 。 即子類只繼承一個(gè)父類的數(shù)據(jù)結(jié)構(gòu)和方法 。 多重繼承: 一個(gè)子類可有多個(gè)父類 。 繼承多個(gè)父類的數(shù)據(jù)結(jié)構(gòu)和方法 。 基類 子類 A 子類 B 圖 4 繼承性描述 現(xiàn)存類定義 父類 (基類 ) 新類定義 子類 (派生類 ) 繼 承 圖 3 繼承性 繼承 單繼承 c c o u n b a la n n a m n u m b e r+ w i th d r a w ( )+ cr ea ta te m e n t( )繼承 多繼承 Fl y i n g T h i n g A n im a lH o r s eW o i r dH e li c o p t e rA i r p la n 裝 (封裝是一種信息隱蔽技術(shù) , 就是把對(duì)象的屬性和行為相結(jié)合構(gòu)成一個(gè)獨(dú)立的基本單位 , 用戶只能見到對(duì)象封裝界面上的信息 ,對(duì)象內(nèi)部對(duì)用戶是隱蔽的 。 封裝的目的在于將對(duì)象的使用者和對(duì)象的設(shè)計(jì)者分開 , 使用者不必知道行為實(shí)現(xiàn)的細(xì)節(jié) , 只需使用設(shè)計(jì)者提供的消息訪問對(duì)象 面向?qū)ο蟮幕靖拍?封裝是把過程和數(shù)據(jù)包圍起來,對(duì)數(shù)據(jù)的訪問只能通過已定義的界面。 面向?qū)ο蟮幕靖拍?公有消息 私有消息 存儲(chǔ)結(jié)構(gòu) 方法 協(xié).議 一個(gè)對(duì)象 面向?qū)ο蟮幕靖拍?封裝的定義為: (1)一個(gè)限定所有對(duì)象內(nèi)部軟件的一個(gè)清楚界面; (2)一個(gè)描述這個(gè)對(duì)象和其它對(duì)象之間相互作用的接口 (3)受保護(hù)的內(nèi)部實(shí)現(xiàn),這個(gè)實(shí)現(xiàn)給出了由軟件對(duì)象提供的功能細(xì)節(jié),實(shí)現(xiàn)細(xì)節(jié)不能在定義這個(gè)對(duì)象的類的外面訪問 封裝 承 矛盾嗎? 封裝性主要指的是對(duì)象的封裝性,引入繼承機(jī)制后,對(duì)象仍然是封裝地很好的實(shí)體,其它對(duì)象與它通信只能發(fā)送消息。 相似性:共享代碼! 繼承:靜態(tài)共享代碼 封裝:動(dòng)態(tài)共享代碼 面向?qū)ο蟮幕靖拍?多態(tài) (即一個(gè) 名字具有多種語義 。 同一對(duì)象接收到不同消息采用不同的行為方式 不同對(duì)象收到相同消息時(shí)產(chǎn)生不同的動(dòng)作 重載( 動(dòng)態(tài)綁定 類屬 多態(tài)性和動(dòng)態(tài)綁定 多態(tài)性 (指相同的操作或函數(shù) 、過程作用于不同的對(duì)象上并獲得不同的結(jié)果 。 即相同的操作的消息發(fā)送給不同的對(duì)象時(shí) , 每個(gè)對(duì)象將根據(jù)自己所屬類中定義的操作去執(zhí)行 , 產(chǎn)生不同的結(jié)果 。 例如: “ 繪圖 ” 操作 , 作用在 “ 橢圓 ” 和 “ 矩形 ” 上 , 畫出不同的圖形 。 動(dòng)態(tài)綁定 (在運(yùn)行時(shí)根據(jù)對(duì)象接收的消息動(dòng)態(tài)地確定要連接的服務(wù)代碼 。 使用虛函數(shù)可實(shí)現(xiàn)動(dòng)態(tài)聯(lián)編 , 不同聯(lián)編可以選擇不同的實(shí)現(xiàn) , 這便是多態(tài)性 。 繼承是動(dòng)態(tài)聯(lián)編的基礎(chǔ) , 虛函數(shù)是動(dòng)態(tài)聯(lián)編的關(guān)鍵 。 多態(tài)性的實(shí)現(xiàn)舉例 實(shí)現(xiàn)多態(tài)性的基本步驟 (以 C+為例 ): (1)在基類中 , 定義成員函數(shù)為虛函數(shù) ( (2)定義基類的公有 ( 派生類; (3)在基類的公有派生類中 “ 重載 ” 該虛函數(shù); (4)定義指向基類的指針變量 , 它指向基類的公有派生類的對(duì)象 。 注意: 重載虛函數(shù)不是一般的重載函數(shù) , 它要求函數(shù)名 、 返回類型 、 參數(shù)個(gè)數(shù) 、 參數(shù)類型和順序完全相同 。 多態(tài) 類與對(duì)象 C+語言程序設(shè)計(jì) C+語言程序設(shè)計(jì) 本章主要內(nèi)容 面向?qū)ο蟮乃枷?類概念和聲明 對(duì)象 構(gòu)造函數(shù) 析構(gòu)函數(shù) 內(nèi)聯(lián)成員函數(shù) 拷貝構(gòu)造函數(shù) 類的組合 C+語言程序設(shè)計(jì) 回顧:面向過程的設(shè)計(jì)方法 重點(diǎn) : 如何實(shí)現(xiàn)細(xì)節(jié)過程,將數(shù)據(jù)與函數(shù)分開。 形式: 主模塊 +若干個(gè)子模塊( +子函數(shù))。 特點(diǎn): 自頂向下,逐步求精 功能分解。 缺點(diǎn): 效率低,程序的可重用性差。 面向?qū)ο蟮乃枷?C+語言程序設(shè)計(jì) 面向?qū)ο蟮姆椒?目的: 實(shí)現(xiàn)軟件設(shè)計(jì)的產(chǎn)業(yè)化。 觀點(diǎn) :解決問題屬于自然界的。 自然界是由實(shí)體(對(duì)象)所組成。 程序設(shè)計(jì)方法: 使用面向?qū)ο蟮挠^點(diǎn)來描述模仿并處理現(xiàn)實(shí)問題。 要求: 高度概括、分類、和抽象。 面向?qū)ο蟮乃枷?C+語言程序設(shè)計(jì) ( 1)抽象 抽象是對(duì)具體對(duì)象(問題)進(jìn)行概括,抽出這一類對(duì)象的公共性質(zhì)并加以描述的過程。(如學(xué)生,教師 , 課程) 先注意問題的本質(zhì)及描述,其次是實(shí)現(xiàn)過程或細(xì)節(jié)。 數(shù)據(jù)抽象:描述某類對(duì)象的屬性或狀態(tài)(對(duì)象相互區(qū)別的物理量)。 行為抽象:描述某類對(duì)象的共有的行為特征或具有的功能。 抽象的實(shí)現(xiàn):通過類的聲明。 +語言程序設(shè)計(jì) 抽象實(shí)例 鐘表 數(shù)據(jù)抽象: 行為抽象: , +語言程序設(shè)計(jì) 抽象實(shí)例 鐘表類 ; ; +語言程序設(shè)計(jì) 抽象實(shí)例 人 數(shù)據(jù)抽象: 行為抽象: 生物屬性角度: , , 社會(huì)屬性角度: , , 注意:同一個(gè)問題可能有不同的抽象結(jié)果:根據(jù)解決問題的要求不同,產(chǎn)生的抽象成員可能不同 +語言程序設(shè)計(jì) (2) 封裝 將抽象出的數(shù)據(jù)成員、行為成員相結(jié)合,將它們視為一個(gè)整體,即類。 目的是增強(qiáng)安全性和簡(jiǎn)化編程,使用者不必了解具體的實(shí)現(xiàn)細(xì)節(jié),而只需要通過外部接口,以特定的訪問權(quán)限,來使用類的成員。 實(shí)現(xiàn)封裝:類聲明中的 +語言程序設(shè)計(jì) 封裝 實(shí)例: ; ; 邊界 特定的訪問權(quán)限 部接口 C+語言程序設(shè)計(jì) ( 3)繼承與派生 為了重用引出了繼函的概念。 是 C+中支持層次分類的一種機(jī)制,允許程序員在保持原有類特性的基礎(chǔ)上,進(jìn)行更具體的說明。 實(shí)現(xiàn):聲明派生類 第 11章 昆蟲的分類樹 +語言程序設(shè)計(jì) 多態(tài)性 多態(tài):同一名稱,不同的功能實(shí)現(xiàn)方式。 目的:達(dá)到行為標(biāo)識(shí)統(tǒng)一,減少程序中標(biāo)識(shí)符的個(gè)數(shù)。 實(shí)現(xiàn):重載函數(shù)和虛函數(shù) 第 12章 +語言程序設(shè)計(jì) c+中的類 類是具有相同屬性和行為的一組對(duì)象的集合,它為屬于該類的全部對(duì)象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和行為兩個(gè)主要部分。 利用類可以實(shí)現(xiàn)數(shù)據(jù)的封裝、隱藏、繼承與派生。 利用類易于編寫大型復(fù)雜程序,其模塊化程度比 類 和 對(duì) 象 C+語言程序設(shè)計(jì) 類與函數(shù) 函數(shù)是將邏輯上相關(guān)的 語句與數(shù)據(jù) 封裝,用于完成特定的功能。 而類則是邏輯上相關(guān)的 函數(shù)與數(shù)據(jù) 的封裝,它是對(duì)所要處理的問題的描述。 類 和 對(duì) 象 C+語言程序設(shè)計(jì) 類的聲明形式 類是一種用戶自定義類型,聲明形式: 名稱 公有成員(外部接口) 私有成員 保護(hù)型成員 類 和 對(duì) 象 C+語言程序設(shè)計(jì) 公有類型成員 在關(guān)鍵字 們是類與外部的接口,任何外部函數(shù)都可以訪問公有類型數(shù)據(jù)和函數(shù)。 類 和 對(duì) 象 C+語言程序設(shè)計(jì) 私有類型成員 在關(guān)鍵字 允許本類中的函數(shù)訪問,而類外部的任何函數(shù)都不能訪問。 如果緊跟在類名稱的后面聲明私有成員,則關(guān)鍵字 類 和 對(duì) 象 C+語言程序設(shè)計(jì) 保護(hù)類型 與 差別表現(xiàn)在繼承與派生時(shí)對(duì)派生類的影響不同, 第七章講 。 類 和 對(duì) 象 C+語言程序設(shè)計(jì) 類的成員 ; ; 類 和 對(duì) 象 成員數(shù)據(jù) 成員函數(shù) : : ; ; C+語言程序設(shè)計(jì) x,y; a,b) x=a; y=b; xx, ; /. ,; ; 構(gòu)造函數(shù)和析構(gòu)函數(shù) xx, X= Y= /.41 C+語言程序設(shè)計(jì) # x,y; Q(a=0,b=0) I = 35; 20; /聲明類 其數(shù)據(jù)和方法 r); /構(gòu)造函數(shù) ; /圓周長(zhǎng) ; /圓面積 ; 43 / 類的實(shí)現(xiàn) / 構(gòu)造函數(shù)初始化數(shù)據(jù)成員 r) r / 計(jì)算圓的周長(zhǎng) * / 計(jì)算圓的面積 I * 44 ) / 提示用戶輸入半徑 / 聲明 象 3); 45 / 計(jì)算柵欄造價(jià)并輸出 * # r,i) r; t; t= t); ; a; # r,i) r; t; t= t); ; a( # r=0.0,i= r; t; t= t); ; a( b; c( # r,i) r; t; t= t); ; a( # r=0.0,i= r; # r=0.0,i= r; c) # r=0.0,i= r; c) # r=0.0,i= r; c) , ) X=Y=; p); ; ; f(); g(); ; =0; f() ; g() , ) X=yy; p); /拷貝構(gòu)造函數(shù) ; ; ) i; /聲明 i i; /取 i=10; / ai; ai; ai; 相當(dāng)于 (*; 指 針 C+語言程序設(shè)計(jì) 對(duì)象指針應(yīng)用舉例 (5,10); A; x; x=; =指 針 C+語言程序設(shè)計(jì) 指針變量作為函數(shù)實(shí)參 以地址方式傳遞數(shù)據(jù),可以用來返回函數(shù)處理結(jié)果。 例如: 指針與函數(shù) C+語言程序設(shè)計(jì) 例 * * C+語言程序設(shè)計(jì) 動(dòng)態(tài)申請(qǐng)內(nèi)存操作符 類型名 T(初值列表) 功能: 在程序執(zhí)行期間,申請(qǐng)用于存放 依初值列表賦以初值。 結(jié)果值: 成功: 向新分配的內(nèi)存。失?。?0( 動(dòng)態(tài)存儲(chǔ)分配 C+語言程序設(shè)計(jì) 釋放內(nèi)存操作符 針 P 功能: 釋放指針 動(dòng)態(tài)存儲(chǔ)分配 C+語言程序設(shè)計(jì) i ; / is ; / i = 0; i i ; / i=0; i X=Y=0; /類的聲明同上例,略 ; ; /創(chuàng)建對(duì)象數(shù)組 ,10); /通過指針訪問數(shù)組元素的成員 5,20); /通過指針訪問數(shù)組元素的成員 / / (a) ; / (b) j = 0; j b; b0) c; . 具有塊作用域的變量也稱為局部變量。 作用域與可見性 C+語言程序設(shè)計(jì) 類作用域 可以將類看成是一組有名成員的集合,除個(gè)別例外情況外,類作用域作用于特定的成員名,類及其對(duì)象有特殊的訪問和作用域規(guī)則。 例:類 , 在 的函數(shù)成員中都可以訪問到 M, ( 1)即 ( 2)這樣的 類的封裝作用就在于限制數(shù)據(jù)的作用域。 作用域與可見性 C+語言程序設(shè)計(jì) 類作用域 通過表達(dá)式 :這是程序中訪問對(duì)象成員的最基本的方法。 X: 通過表達(dá)式 , 其中 作用域與可見性 C+語言程序設(shè)計(jì) 命名空間作用域 一個(gè)大型的程序通常由不同模塊構(gòu)成,不同的模塊甚至有可能是由不同人員開發(fā)的。不同模塊中的類和函數(shù)之間有可能發(fā)生重名,這樣就會(huì)引發(fā)錯(cuò)誤。如南京路(上海的、武漢的) 作用域與可見性 C+語言程序設(shè)計(jì) 命名空間的語法形式: 名空間名 命名空間內(nèi)的各種聲明(函數(shù)聲明、類聲明、 ) 一個(gè)命名空間確定了一個(gè)命名空間作用域,凡是在該命名空間之內(nèi)聲明的、不屬于前面所述各個(gè)作用域的標(biāo)識(shí)符都屬于該命名空間作用域。在命名空間內(nèi)部可以直接引用當(dāng)命名空間中聲明的標(biāo)識(shí)符,如果需要引用其他命名空間的標(biāo)識(shí)符,需要使用下面的語法: 命名空間名 :標(biāo)識(shí)符名 作用域與可見性 C+語言程序設(shè)計(jì) 例: ); ; /聲明一個(gè)作用域與可見性 命名空間作用域 C+語言程序設(shè)計(jì) 有時(shí),在標(biāo)識(shí)符前總使用這樣的命名空間限定會(huì)顯得過于冗長(zhǎng),為了解決這一問題, C+又提供了 名空間名 :標(biāo)識(shí)符名; 名空間名; C+標(biāo)準(zhǔn)程序庫的所有標(biāo)識(shí)符都被聲明在 此都使用了 如果去掉這條語句,則引用相應(yīng)的標(biāo)識(shí)符需要使用 作用域與可見性 命名空間作用域 C+語言程序設(shè)計(jì) 命名空間也允許嵌套,如: ; 引用其中的 要使用 作用域與可見性 命名空間作用域 C+語言程序設(shè)計(jì) 兩類特殊的命名空間 全局命名空間 匿名命名空間 全局命名空間是默認(rèn)的命名空間,在顯式聲明的命名空間之外聲明的標(biāo)識(shí)符都在一個(gè)全局命名空間中(文件作用域)。 匿名命名空間是一個(gè)需要顯式聲明的沒有名字的命名空間,聲明方式如下: 匿名命名空間內(nèi)的各種聲明(函數(shù)聲明、類聲明、 ) 作用域與可見性 C+語言程序設(shè)計(jì) 在包含多個(gè)源文件的工程中,匿名命名空間常常被用來屏蔽不希望暴露給其他源文件的標(biāo)識(shí)符,這是因?yàn)槊總€(gè)源文件的匿名命名空間是彼此不同的,在一個(gè)源文件中沒有辦法訪問其他源文件的匿名命名空間。例: 作用域與可見性 命名空間作用域 C+語言程序設(shè)計(jì) # i; /在全局命名空間的全局變量 (又稱文件作用域 ) s j; /在 i=5; /為全局變量 j=6; /為全局變量 s; /使得當(dāng)前塊中可以直接引用 名空間的標(biāo)識(shí)符 i; /局部變量 i=7; i; /文件作用域 j=3; i=5; i; /塊作用域 i=7; i=5; /文件作用域 k=3; ; ; ; a=1; i=5; a+; i+; ;/構(gòu)造函數(shù) /三個(gè)形參均具有函數(shù)原型作用域 ; /析構(gòu)函數(shù) ; 對(duì)象的生存期 /時(shí)鐘類成員函數(shù)實(shí)現(xiàn) /構(gòu)造函數(shù) ; ; ; f() ; g() r); d( d); ; r) /常引用做形參,在函數(shù)中不能更新 R(R1=2= ; 1, ; : A(i); ; r; a; b; /靜態(tài)常數(shù)據(jù)成員 ; :b=10; A:A(i):a(i),r(a) : 按標(biāo)準(zhǔn)方式搜索,文件位于 C+系統(tǒng)目錄的 #件名 首先在當(dāng)前目錄中搜索,若沒有,再按標(biāo)準(zhǔn)方式搜索。 #定義指令 定義符號(hào)常量,很多情況下已被 定義帶參數(shù)宏,已被內(nèi)聯(lián)函數(shù)取代。 # 刪除由 #之不再起作用。 C+語言程序設(shè)計(jì) 條件編譯指令 # # #常量表達(dá)式 /當(dāng)“ 常量表達(dá)式”非零時(shí)編譯 程序正文 # . 編譯預(yù)處理命令 C+語言程序設(shè)計(jì) 條件編譯指令 # # 常量表達(dá)式 /當(dāng)“ 常量表達(dá)式”非零時(shí)編譯 程序正文 1 # /當(dāng)“ 常量表達(dá)式”為零時(shí)編譯 程序正文 2 #譯預(yù)處理命令 C+語言程序設(shè)計(jì) 條件編譯指令 # # 常量表達(dá)式 1 程序正文 1 /當(dāng)“ 常量表達(dá)式 1”非零時(shí)編譯 #常量表達(dá)式 2 程序正文 2 /當(dāng)“ 常量表達(dá)式 2”非零時(shí)編譯 # 程序正文 3 /其它情況下編譯 #譯預(yù)處理命令 C+語言程序設(shè)計(jì) 條件編譯指令 # 標(biāo)識(shí)符 程序段 1 # 程序段 2 #如果“標(biāo)識(shí)符”經(jīng) #未經(jīng) 編譯程序段 1,否則編譯程序段 2。 編譯預(yù)處理命令 C+語言程序設(shè)計(jì) 條件編譯指令 # 標(biāo)識(shí)符 程序段 1 # 程序段 2 #如果“標(biāo)識(shí)符”未被定義過,則編譯程序段 1,否則編譯程序段 2。 編譯預(yù)處理命令 C+語言程序設(shè)計(jì) 多文件結(jié)構(gòu) 一個(gè)源程序可以劃分為多個(gè)源文件: 類聲明文件( 類實(shí)現(xiàn)文件( 類的使用文件( 所在的 利用工程來組合各個(gè)文件。 C+語言程序設(shè)計(jì) 不使用條件編譯的頭文件 / # # / # / # / 多文件結(jié)構(gòu) C+語言程序設(shè)計(jì) 使用條件編譯的頭文件 / # #- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
7 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- c+ 面向 對(duì)象 程序設(shè)計(jì)
鏈接地址:http://m.appdesigncorp.com/p-3024.html