第一篇:(打印)C++考試總結(jié)篇
一、填空題(20分)
1.軟件工程是指導(dǎo)(計算機軟件)開發(fā)和維護的(工程學(xué)科)。
2.應(yīng)用軟件工程方法開發(fā)軟件系統(tǒng)的根本目的是為了改善下述四項軟件品質(zhì)因素:提高所開發(fā)的軟件系統(tǒng)的(效率);降低所開發(fā)的軟件系統(tǒng)的(成本);改善所開發(fā)的軟件系統(tǒng)的(質(zhì)量);縮短所開發(fā)的軟件系統(tǒng)的(周期)。3.抽象的對象模型由(屬性)和(方法)兩個部分構(gòu)成。
4.一個消息必須具備的兩個要素是(接受消息的對象標志)和(接受消息的對象的方法標志)。
5.一個對象擁有另一個對象的(部分)或(全部)的屬性和方法的關(guān)系則稱為(繼承)關(guān)系。
6.失去(定義對象)能力的類稱為抽象類。
7.一個類的屬性不能出現(xiàn)對象拷貝則稱為(類屬性)。8.面向?qū)ο蠹夹g(shù)的三大特征是(封裝)、(繼承)和(多態(tài))。
9.共生包容關(guān)系中的被包容類對象與包容類對象是(同時連帶)生成的。10.同時出現(xiàn)在兩個具有關(guān)聯(lián)關(guān)系的對象內(nèi)的相同屬性被稱為(連接屬性)。11.一個用例模型的設(shè)計要有三類人的參與,他們分別是(主要參與者)、(次要參與者)和(后方參與者)。
12.邊界類中涉及到的三個接口是(用戶接口)、(設(shè)備接口)和(系統(tǒng)接口)。13.一個用例中的各個類之間存在的最普遍的關(guān)系是(關(guān)聯(lián))關(guān)系。
14.在面向?qū)ο蠹夹g(shù)中,使用多態(tài)技術(shù)手段可以大大(延長)軟件的使用壽命、降低了軟件產(chǎn)品的開發(fā)(成本),其中的泛化技術(shù)手段還可以極大的提高軟件產(chǎn)品的(可移植)性。
15.類屬性和類方法對應(yīng)于面向?qū)ο笳Z言中的(靜態(tài)成員數(shù)據(jù))和(靜態(tài)成員函數(shù))。
16.一個用例內(nèi)至少要有一個(邊界類)和一個(控制類)。
17.一個繼承了抽象類且可以制造對象的派生類所生成的對象內(nèi)存在一個其繼承得到的抽象類對象的(方法成員)。
18.軟件的生存周期是一個軟件產(chǎn)品從(定義)、(開發(fā))、(使用)到(廢棄)的時間的總和。
19.C++語言中的靜態(tài)成員函數(shù)是(類方法)的具體實現(xiàn)。21.連接屬性是(關(guān)聯(lián))關(guān)系的兩個對象內(nèi)的屬性。21.邊界類與(actor(角色))對呈一一對應(yīng)關(guān)系。
22.復(fù)合聚合關(guān)系中的(聚合)類對象極其依賴(被聚合)類對象,在實現(xiàn)上往往具有被同時(構(gòu)造)的特征,因而具有極高的(耦合度)。
二、是非判斷題(20分)
1.消息必須含有返回消息。(錯)2.一個類必然具有生成對象的能力。(錯)(抽象類不具備)3.在包容關(guān)系中的被包容類也具有封裝性。(對)4.關(guān)聯(lián)關(guān)系只是一個動作的抽象。(錯)(表示兩個類之間的聯(lián)系,通過這種聯(lián)系,一個類可以訪問到另一個類的屬性和方法。)
5.一個類也可以接收消息。(對)6.類方法可以實施消息轉(zhuǎn)發(fā)。(對)
7.棱形多重派生結(jié)構(gòu)必然存在某多個基類對象問題。(錯)8.對于事件流腳本的歸納與抽象可以實現(xiàn)狀態(tài)圖的優(yōu)化。(對)9.關(guān)聯(lián)關(guān)系中的作用名標志了該關(guān)聯(lián)關(guān)系的終點對象的恰當?shù)匚弧#▽Γ?0.狀態(tài)圖是反映整個系統(tǒng)動態(tài)運行時狀態(tài)變化的圖形工具。(對)11.多重繼承必然存在不確定問題。(錯)
12.候選鍵是具有關(guān)聯(lián)關(guān)系的兩個類中屬性的一部分。(錯)13.候選鍵是具有關(guān)聯(lián)關(guān)系的兩個類中最小屬性的集合。(錯)14.確定候選鍵是對關(guān)聯(lián)關(guān)系模型優(yōu)化的一種手段。(對)
15.面向?qū)ο笤O(shè)計方法的一個重要目標便是實現(xiàn)“可重用軟件的設(shè)計”。(對)16.UML中的活動圖可以描述面向?qū)ο蠓治龊驮O(shè)計的全過程的工作流程。(對)17.繼承關(guān)系中的成員覆蓋就是重載的一種形式。(錯)(多態(tài)的一種)
18.一個派生類對象的方法不能訪問其繼承的基類對象的某些成員是由于這些基類對象的成員不存在于派生類對象中。(錯)(繼承方式不同,public protected private)
19.一個以限制性繼承的派生類對象訪問其繼承的基類對象時必須通過消息手段。(對)
20.一個派生類對象也可以向其繼承的積累對象發(fā)消息。(對)21.狀態(tài)的自動變遷是由于一個內(nèi)部的事件所引發(fā)的。(錯)(應(yīng)該是條件變遷)22.面向?qū)ο蟮姆椒ㄖ写嬖谧皂斚蛳拢鸩角缶倪^程。(錯)23.抽象類是不包含任何屬性的類。(錯)24.調(diào)用類方法必須向該類的對象發(fā)消息。(錯)
25.復(fù)合包容關(guān)系中的被包容對象必須在包容對象被激活的同時構(gòu)造。(對)26.繼承關(guān)系中也存在有關(guān)聯(lián)關(guān)系。(對)27.使用c++語言智能編寫面向?qū)ο蟮某绦?。(錯)
28.使用c++語言不能同時編寫出面向過程和面向?qū)ο蟮某绦颉#ㄥe)29.在關(guān)聯(lián)關(guān)系的兩端插入角色描述(Role Name)有助于對該關(guān)聯(lián)關(guān)系的可讀性。(對)
30.只有屬性的類也具有封裝性。(錯)
31.在面向?qū)ο蠹夹g(shù)系統(tǒng)分析中,問題陳述是獲取對象的重要來源。(對)32.在面向?qū)ο蠹夹g(shù)系統(tǒng)分析中不適用數(shù)據(jù)流圖。(錯)33.一個對象的方法只能改變本對象的屬性值。(錯)
(對象行為:1,主動:直接改變自身屬性值;2,被動:通過訪問其他對象而改變自身屬性值。)
34.一個對象內(nèi)存在另一個對象的關(guān)系稱為包容關(guān)系。(錯)(聚合關(guān)系)35.含有定性的屬性的類就是抽象類。(錯)36.當使用一個類方法時,消息是傳向一個類的。(對)37.一個對象所呈現(xiàn)的不同狀態(tài)稱為多態(tài)。(對)
38.靜態(tài)鏈接是在面向?qū)ο蠹夹g(shù)語言編譯時建立的對象關(guān)系。(對)39.RUP的開發(fā)周期由三個階段所構(gòu)成。(錯)(初始階段-細化-構(gòu)造-交付四個階段)
40.RUP中的系統(tǒng)行為是對其全部的外來刺激進行作用和反作用。(對)41.RUP中的系統(tǒng)行為可以從對象模型中獲得。(錯)(用例模型)
三、單項選擇題(16分)1.面向?qū)ο蠹夹g(shù)是(A.指導(dǎo)構(gòu)建軟件的系列法則)。2.(B.沙發(fā))項目對建模的要求度最小。3.一個模型(C.是一個實例的簡化)。
4.在UML中,使用(A.Package)詞匯表示可以將具有共同用途的模型元素組成多個組。
5.最好的模型將與(B.實體)聯(lián)系在一起。
6.使用UML模型建模時(C.彈性設(shè)計)的處理不是其最基本的特征。7.建模的根本目的是(D.上述三條的總和)。
8.一個對象的狀態(tài)(C.被描述成對象的屬性和關(guān)系)。9.以下RUP中的(D.邏輯)是聚焦在結(jié)構(gòu)問題上。
10.短語(B.is a kind of)可以最好的體現(xiàn)泛化關(guān)系。11.封裝(B.涉及到信息的隱藏)
12.封裝(A.是指一種對象組成結(jié)構(gòu)的存在形式)
13.一個可見的對象行為可以被模型化為該對象的(C.操作)。14.多態(tài)可以被描述成(A.在一個接口上隱藏多個不同實現(xiàn)的形態(tài))。15.多態(tài)是(A.系統(tǒng)面對一個服務(wù)請求而設(shè)置了多個不同接口的形態(tài))。
16.將模塊與計劃合并為一體化的目的是(A.在可管理的單元上降低一些復(fù)雜程度)。
17.Rational推出的RUP方法中倡導(dǎo)的迭代式開發(fā)模式的最根本目的是為了(B.降低開發(fā)風(fēng)險)。
18.一個類(D.是一個對象的抽象定義)。
19.一個對象的狀態(tài)(A.是一個被稱為“狀態(tài)”的屬性或?qū)傩约?/p>
20.在一個對象系統(tǒng)內(nèi)兩個彼此間具有(C.拓展繼承關(guān)系)結(jié)構(gòu)的對象間的訪問必須以來信息手段。
21.利用繼承派生關(guān)系中的重構(gòu)手段獲得的新系統(tǒng)是為了(C.允許多個不同版本的功能可以同時使用)。
22.C++語言廣泛使用運算符函數(shù)的目的是(C.適應(yīng)泛化技術(shù))。
23.抽象類不能構(gòu)建對象的原因是(B.至少存在一個屬性不能賦予數(shù)值)。24.對象構(gòu)成封裝形態(tài)的根本意義在于(D.提高軟件系統(tǒng)的安全性能)。25.進行可視化建模的根本目的在于(A.便于設(shè)計出最優(yōu)化的程序代碼系統(tǒng))。26.應(yīng)用多態(tài)手段的目的是為了(A.滿足對一個功能的多個不同版本的動態(tài)訪問需求)。
四、分析題(30分)
1.指出下列對象之間的關(guān)系(每題1分,共10分)
(1)軟件工程與面向?qū)ο蟮姆治雠c設(shè)計方法(包容關(guān)系)(2)矛與盾(關(guān)聯(lián)關(guān)系)
(3)數(shù)字交換系統(tǒng)與通信系統(tǒng)(繼承關(guān)系)(4)人與心臟(包容關(guān)系)
(5)Pentium芯片與Pentium IV芯片(繼承關(guān)系)(6)計算機與磁帶機(關(guān)聯(lián)關(guān)系)
(7)多媒體與三維圖形設(shè)備(繼承關(guān)系)(8)石油與汽油(繼承關(guān)系)(9)道路與車輛(關(guān)聯(lián)關(guān)系)(10)煤炭與碳元素(繼承關(guān)系)(11)地球與太陽(關(guān)聯(lián)關(guān)系)(12)家庭影院與音響(包容關(guān)系)(13)信息與印刷品(繼承關(guān)系)(14)鑰匙與鎖(關(guān)聯(lián)關(guān)系)(15)燈泡與燈絲(包容關(guān)系)(16)計算機與打印機(關(guān)聯(lián)關(guān)系)(17)公司與雇員(包容關(guān)系)(18)建筑體與墻(包容關(guān)系)
第二篇:c++知識點總結(jié)
C++知識點總結(jié)
Day01
一、名字空間(標準庫中的標識符都定義在std名字空間中)
1、名字空間的定義
namespace 名字空間名{ 名字空間成員 }
2、名字空間指令
using namespace 名字空間名;
3、名字空間聲明
using 名字空間名::標示符;
4、無名名字空間
namespace { 名字空間成員;}
5、無名名字空間的聲明
::標示符
二、C++的結(jié)構(gòu)、聯(lián)合和枚舉
1、C++的結(jié)構(gòu)里面可以定義函數(shù)
2、C++里定義結(jié)構(gòu)型變量的時候可以省略struct關(guān)鍵字
3、C++中的聲明聯(lián)合類型的變量可以不加union關(guān)鍵字,支持匿名聯(lián)合
4、C++的枚舉是一個獨立的數(shù)據(jù)類型,而不是整數(shù)類型。
三、C++的bool類型
bool類型變量只可以取true或false
四、C++的函數(shù)
1、函數(shù)支持重載
重載:在同一個作用域中,函數(shù)名相同,參數(shù)表不同的函數(shù)之間構(gòu)成重載關(guān)系。函數(shù)原型:返回類型+函數(shù)名+參數(shù)表
函數(shù)簽名:函數(shù)名+參數(shù)表 //c++中,同一作用域中,函數(shù)簽名必須是唯一的。
2、函數(shù)指針
函數(shù)指針的類型決定其具體指向的重載版本,而不是由實參的類型決定。
3、extern “C”
通過extern “C”指示編譯器以C語言的方式處理C++源文件中的C函數(shù)(不做函數(shù)名置換)。
5、缺省參數(shù)
如果為函數(shù)的一個參數(shù)指定了缺省值,那么該參數(shù)右面的所有參數(shù)必須都有缺省值。注意:缺省參數(shù)只能用在函數(shù)的聲明中。
6、啞元
借助啞元參數(shù)保證函數(shù)的向后兼容。借助啞元實現(xiàn)函數(shù)的重載。
7、內(nèi)聯(lián)
內(nèi)聯(lián)函數(shù)保持了函數(shù)的特性,同時避免了函數(shù)調(diào)用的開銷。
inline關(guān)鍵字僅僅表示希望該函數(shù)被編譯為內(nèi)聯(lián),通常情況下,大函數(shù)和遞歸函數(shù)不會被處理為內(nèi)聯(lián)。
五、內(nèi)存分配
1、new/delete操作符
如果內(nèi)存是以數(shù)組的形式分配的,那么也應(yīng)該按照數(shù)組的方式釋放——delete[]。
如果new失敗,這時會拋出bad_alloc異常,程序應(yīng)該捕獲并處理該異常,否則進程將被系統(tǒng)殺死。
Day02
一、引用&
1、引用實際上是一個變量的別名。
2、引用必須在聲明的同時初始化
3、引用一旦初始化,再不能引用其他變量
4、只有const型引用才能引用常量
5、不能對常引用做賦值操作
二、C++中的類型轉(zhuǎn)換
1、靜態(tài)類型轉(zhuǎn)換: static_cast<類型>(變量);需要編譯器對類型轉(zhuǎn)換安全性進行檢查; 將void*轉(zhuǎn)換為具體類型的指針。
在源類型和目標類型之間只要有一個方向上可以做隱式類型轉(zhuǎn)換,那么在兩個方向上就都可以做靜態(tài)類型轉(zhuǎn)換。
2、動態(tài)類型轉(zhuǎn)換:dynamic_cast<類型>(變量);用于在具有多態(tài)特性的父子類之間的轉(zhuǎn)換。
3、常量類型轉(zhuǎn)換:const_cast<類型>(變量);去除指針或者引用上的const屬性。
4、重解釋類型轉(zhuǎn)換:reinterpret_cast<類型>(變量);允許對任意類型的指針進行轉(zhuǎn)換。在指針和整型之間進行轉(zhuǎn)換。
三、類和對象
1、類的聲明和定義可以分開、類的成員變量、類的成員函數(shù)。
2、類的訪問控制
1)public:公有成員,誰都可以訪問。
2)private:私有成員,只有自己才能訪問。
3)protected:保護成員,只有自己和自己的子類可以訪問
訪控限定符
| 訪控屬性
| 自己
| 子類 | 其它--------------public
|
公有
|
Ok | Ok | Ok protected
|
保護
|
Ok | Ok | No private
|
私有
|
Ok | No | No 注意:類的缺省訪控屬性是私有,而結(jié)構(gòu)體的缺省訪控屬性是公有。
3、構(gòu)造函數(shù)
1)如果一個類中沒有定義任何構(gòu)造函數(shù),系統(tǒng)就會自動提供一個默認的無參構(gòu)造函數(shù)。2)如果為一個類定義了構(gòu)造函數(shù),系統(tǒng)就不會在為該類提供任何構(gòu)造函數(shù)了。3)構(gòu)造函數(shù)可以重載 4)構(gòu)造函數(shù)初始化列表:
1>需要對類類型的成員變量做初始化; 2>含有引用或常量型成員;
4、對象的創(chuàng)建與銷毀 1)在棧中創(chuàng)建對象
類名 對象名(構(gòu)造參數(shù));// 隱式構(gòu)造
類名 對象名 = 類名(構(gòu)造參數(shù));// 顯式構(gòu)造 2)在棧中創(chuàng)建對象數(shù)組
類名 數(shù)組名[元素個數(shù)] = {類名(構(gòu)造參數(shù)),...};3)在堆中創(chuàng)建對象
類名* 對象指針 = new 類名(構(gòu)造參數(shù));4)在堆中創(chuàng)建對象數(shù)組
類名* 對象數(shù)組指針 = new 類名[元素個數(shù)];Day03 類和對象(下)
一、this指針
1、一般而言,關(guān)鍵字this是一個指針。對于一般成員函數(shù),它指向調(diào)用該成員函數(shù)的對象,而對于構(gòu)造函數(shù),它則指向這個正在被構(gòu)造的對象。
2、在構(gòu)造函數(shù)中可以通過this指針區(qū)分成員變量和局部變量(包括參數(shù))。
3、基于this指針的自身引用還被用于支持多重串聯(lián)調(diào)用的場合。
4、將this指針作為函數(shù)的參數(shù),實現(xiàn)對象間的交互。
二、常量型成員函數(shù)和常量型對象
1、常量型成員函數(shù)中的this指針為常量型,以此防止對成員變量的意外修改。對常量型對象(包括指針和引用),只能調(diào)用其常量型成員函數(shù)。
2、被聲明為mutable的成員變量可以在常量型成員函數(shù)中被修改。
3、常量型成員函數(shù)和具有相同簽名的非常量型成員函數(shù)構(gòu)成重載關(guān)系。
4、當常量型成員函數(shù)與非常量型成員函數(shù)構(gòu)成重載關(guān)系時,非常量對象會優(yōu)先選擇非常量型成員函數(shù)。
三、析構(gòu)函數(shù)
1、沒有參數(shù),不能重載。
構(gòu)造順序:創(chuàng)建成員變量->構(gòu)造函數(shù)體 析構(gòu)順序:析構(gòu)函數(shù)體->銷毀成員變量
2、缺省析構(gòu)函數(shù)
1>對于未定義析構(gòu)函數(shù)的類,系統(tǒng)會提供缺省析構(gòu)函數(shù),該析構(gòu)函數(shù)負責(zé)銷毀該類的成員變量。
2>缺省析構(gòu)函數(shù)不負責(zé)釋放動態(tài)分配的資源。
3、對于動態(tài)分配的資源,必須通過自己定義的析構(gòu)函數(shù)進行釋放。
4、析構(gòu)函數(shù)是釋放的資源不僅限于內(nèi)存資源。
四、拷貝構(gòu)造函數(shù)
1、拷貝構(gòu)造:用一個已有的對象去構(gòu)造另一個同類型的副本對象。
2、拷貝構(gòu)造是通過拷貝構(gòu)造函數(shù)實現(xiàn)的。class 類名 {
類名(const 類名& 源對象引用){
從源對象到當前對象的復(fù)制;
} };
3、如果沒有為一個類提供自定義的拷貝構(gòu)造函數(shù),系統(tǒng)就會提供一個缺省的拷貝構(gòu)造函數(shù),實現(xiàn)從源對象到目標對象的復(fù)制。
4、某些情況下系統(tǒng)提供的缺省拷貝構(gòu)造函數(shù)可能無法滿足具體的應(yīng)用需求。這時就有必要提供自定義的拷貝構(gòu)造函數(shù)。
5、拷貝構(gòu)造發(fā)生的時機 1>構(gòu)造對象副本;
2>以對象作為函數(shù)的參數(shù)和返回值; 3>以對象的方式捕獲異常。
五、拷貝賦值運算符
1、拷貝賦值:用一個已有的對象賦值給另一個同類型的副本對象。
2、拷貝賦值是通過拷貝賦值函數(shù)實現(xiàn)的。class 類名 {
類名& operator=(const 類名& 源對象引用){
從源對象到當前對象的復(fù)制;
} };
3、如果沒有為一個類提供自定義的拷貝賦值函數(shù),系統(tǒng)就會提供一個缺省的拷貝賦值函數(shù),實現(xiàn)從源對象到目標對象的復(fù)制。
4、某些情況下系統(tǒng)提供的缺省拷貝賦值函數(shù)可能無法滿足具體的應(yīng)用需求。這時就有必要提供自定義的拷貝賦值函數(shù)。
六、靜態(tài)成員
1、靜態(tài)成員是屬于類的,唯一的,可為該類對象所共享。
2、靜態(tài)成員函數(shù)只能訪問靜態(tài)成員。
3、非靜態(tài)成員函數(shù)既能訪問靜態(tài)成員,也能訪問非靜態(tài)成員。
4、靜態(tài)成員變量必須在類外定義并初始化。
5、既可以通過類也可以通過對象訪問靜態(tài)成員,但最好通過類。
6、靜態(tài)成員同樣受類的訪問控制屬性的影響。
Day04
一、指向成員變量的指針
1、定義語法:成員變量類型 類名::*指針變量名;string Student::*pstrName;//pstrName是指向Student類中string類型的成員變量的指針
2、賦值即初始化語法:指針變量名= &類名::成員變量名;pstrName = &Student::m_strName;// pstrName指向Student類的m_strName成員變量
3、解引用語法:對象.*指針變量名 或者 對象指針->*指針變量名 Student student(...);cout << student.*pstrName << endl;Student* pStudent = &student;cout << pStudent->*pstrName << endl;
二、指向成員函數(shù)的指針
1、定義語法:成員函數(shù)返回類型(類名::*指針變量名)(形參表);void(Student::*pfuncSetName)(const string&);
2、賦值和初始化語法:指針變量名 = &類名::成員函數(shù)名;pfuncSetName = &Student::SetName;
3、解引用語法:(對象.*指針變量名)(...)、(對象指針->*指針變量名)(...)Student student(...);//創(chuàng)建對象(student.*puncSetName)(...);Student* pStudent = &student;//創(chuàng)建對象指針(pStudent->*pfuncSetName)(...);
三、對于靜態(tài)成員,可以使用普通指針訪問,不需要成員指針。
四、操作符重載
1、操作符的通用語法
1)雙目操作符:<左操作數(shù)><操作符><右操作數(shù)>,L#R。
2)單目操作符:<操作數(shù)><操作符>或<操作符><操作數(shù)>,O#或#O
2、被重載操作符的操作數(shù)中至少有一個是類類型。
3、重載操作符不會改變優(yōu)先級。
4、重載操作符無法改變操作數(shù)的個數(shù)。
5、除“()”以外所有操作符函數(shù)都不能含有缺省參數(shù)。
6、所謂重載操作符實際上就是定一個提供操作符運算法則的函數(shù)(成員函數(shù)或全局函數(shù))。
五、雙目操作符重載
L#R 全局函數(shù):operator#(L, R),如果需要可定義為友元。成員函數(shù):L.operator#(R)
六、單目操作符重載
#O 全局函數(shù):operator#(O)成員函數(shù):O.opertor#()取負運算“-“
七、輸入輸出操作符重載
一般情況下,輸入輸出操作符比較適合通過全局(友元)函數(shù)來實現(xiàn),避免修改標準C++庫的iostream類。
重載輸出運算符函數(shù)形式:
ostream& operator<<(ostream& os, const 類名& 對象引用){
輸出對象的內(nèi)容;
return os;} 重載輸出運算符函數(shù)形式:
istream& operator>>(istream& is, 類名& 對象引用){
輸入對象的內(nèi)容;
return is;}
八、不允許重載的操作符
::
-作用域解析.取字節(jié)數(shù) typeid針對鍵盤設(shè)備的輸入流對象針對顯示器設(shè)備的輸出流對象針對出錯設(shè)備的輸出流對象-stderr
3、文本I/O 1)文本文件的格式化I/O 2)文件位置
A.get和put位置 B.隨機讀寫 3)非格式化I/O
4、二進制I/O
第三篇:C、C++總結(jié)
1、類:類是一種抽象的數(shù)據(jù)結(jié)構(gòu),用來描述對象的屬性,是將不同數(shù)據(jù)類型的數(shù)據(jù)以及與這些數(shù)據(jù)相關(guān)的操作封裝在一起的集合體。(封裝性)
一個類的對象所占空間的大小由它的數(shù)據(jù)成員所占據(jù)的空間總和決定;當類有virtual函數(shù)時,再加上4個字節(jié)的大小。
2、面向過程與面向?qū)ο蟪绦蛟O(shè)計的不同:
(1)過程是基于算法的,而對象是基于類的;
(2)過程是以函數(shù)(過程)的設(shè)計來實現(xiàn)的,而對象是以類的設(shè)計來實現(xiàn)的;
(3)過程通過數(shù)據(jù)流圖(流程圖)來體現(xiàn)的,而對象是通過類圖(用例圖)來體現(xiàn)的;(4)過程需要將步驟一步一步的具體化,而對象則只注重類的設(shè)計,不管實現(xiàn)方法。
3、面向?qū)ο蟮乃拇筇攸c:抽象、封裝、繼承、多態(tài)
4、訪問控制權(quán)限:
(1)public公有型:外部可以訪問
(2)protected 保護型:除了本類、子類與友元可訪問外其它的都不能訪問(3)private 私有型:除了本類外,外部的都不能訪問
5、類與對象的區(qū)別:
(1)二者的定義不同:類是不同類型數(shù)據(jù)及其相關(guān)操作的集合,對象則是類的實例化(2)類是個類型,不占空間,但對象占空間。
(3)類是類型而不是數(shù)據(jù)對象,每個類的對象都是該類數(shù)據(jù)成員的拷貝
6、繼承與派生的目的:(1)實現(xiàn)代碼的重用
(2)使已存在的類不需修改地適應(yīng)新應(yīng)用 7.繼承的特點:
(1)每個派生類代表基類的特定版本
(2)基類的屬性和方法,派生類必須擁有(構(gòu)造與析構(gòu)不會被繼承)8.繼承的3種方式:public,private,protected
9、多態(tài):是指發(fā)出同樣的消息被不同類型的對象接收后導(dǎo)致完全不同的行為(1)多態(tài)的條件:
○1有兩個是父子關(guān)系的類 ○2有同名的虛函數(shù)
○3有父類指針或引用調(diào)用子類對象(2)多態(tài)的實現(xiàn):
函數(shù)的重載 運算符重載 虛函數(shù)
1、static有什么用途?(請至少說明兩種)關(guān)鍵字static的作用是什么?
定義靜態(tài)變量 1.限制變量的作用域 2.設(shè)置變量的存儲域
C和C++中static用法(1)C中:
○1當一個變量被定義成static型時,表明該變量是一個靜態(tài)變量,存儲在靜態(tài)存儲區(qū)中,只能被定義初始化一次;特別的當全局變量被定義成static型時,還表明該變量不能被外部文件所引用
○2當一個函數(shù)被聲明為static型時,表明該函數(shù)是一個靜態(tài)函數(shù),不能被外部文件所調(diào)用
1(2)C++的類中:
○1當類的數(shù)據(jù)成員被聲明為static型時,表明該成員是一個能被所有對象共享的數(shù)據(jù)成員,不與任何具體對象掛勾
○2 當類的成員函數(shù)被聲明為static型時,表明該成員是靜態(tài)成員函數(shù)。
2、引用與指針有什么區(qū)別? 1)引用必須被初始化,指針不必。
2)引用初始化以后不能被改變,指針可以改變所指的對象。2)不存在指向空值的引用,但是存在指向空值的指針。
3、描述實時系統(tǒng)的基本特性
在特定時間內(nèi)完成特定的任務(wù),實時性與可靠性
4、全局變量和局部變量在內(nèi)存中是否有區(qū)別?如果有,是什么區(qū)別? 全局變量儲存在靜態(tài)數(shù)據(jù)庫,局部變量在堆棧 5 什么是平衡二叉樹?
左右子樹都是平衡二叉樹 且左右子樹的深度差值的絕對值不大于1
6、堆棧溢出一般是由什么原因?qū)е碌模?沒有回收垃圾資源
7、什么函數(shù)不能聲明為虛函數(shù)? constructor 8 冒泡排序算法的時間復(fù)雜度是什么? O(n^2)
9、Internet采用哪種網(wǎng)絡(luò)協(xié)議?該協(xié)議的主要層次結(jié)構(gòu)? tcp/ip 應(yīng)用層/傳輸層/網(wǎng)絡(luò)層/數(shù)據(jù)鏈路層
10、Internet物理地址和IP地址轉(zhuǎn)換采用什么協(xié)議? ARP(Address Resolution Protocol)(地址解析協(xié)議)
11、.IP地址的編碼分為哪倆部分?
IP地址由兩部分組成,網(wǎng)絡(luò)號和主機號。不過是要和“子網(wǎng)掩碼”按位與上之后才能區(qū)分哪些是網(wǎng)絡(luò)位哪些是主機位。
12、分別給出BOOL,int,float,指針變量 與“零值”比較的 if 語句(假設(shè)變量名為var)
BOOL型變量:if(!var)int型變量: if(var==0)float型變量:
const float EPSINON = 0.00001;
if((x >=-EPSINON)&&(x <= EPSINON)
指針變量:
if(var==NULL)
13、不能做switch()的參數(shù)類型是: switch的參數(shù)不能為實型/
14、局部變量能否和全局變量重名?
答:能,局部會屏蔽全局。要用全局變量,需要使用“::” /
15、如何引用一個已經(jīng)定義過的全局變量? 答:extern
16、全局變量可不可以定義在可被多個.C文件包含的頭文件中?為什么? 答:可以,在不同的C文件中以static形式來聲明同名全局變量。
17、語句for(;1 ;)有什么問題?它是什么意思?
答:和while(1)相同。
18、do??while和while??do有什么區(qū)別?
答:前一個循環(huán)一遍再判斷,后一個判斷以后再循環(huán)
18、static全局變量與普通的全局變量有什么區(qū)別?static局部變量和普通局部變量有什么區(qū)別?static函數(shù)與普通函數(shù)有什么區(qū)別?
static全局變量與普通的全局變量有什么區(qū)別:static全局變量只初使化一次,防止在其他文件單元中被引用;static局部變量和普通局部變量有什么區(qū)別:static局部變量只被初始化一次,下一次依據(jù)上一次結(jié)果值;
static函數(shù)與普通函數(shù)有什么區(qū)別:static函數(shù)在內(nèi)存中只有一份,普通函數(shù)在每個被調(diào)用中維持一份拷貝。
程序的局部變量存在于(堆棧)中,全局變量存在于(靜態(tài)區(qū))中,動態(tài)申請數(shù)據(jù)存在于(堆)中。
19、sizeof(...)是運算符,它的功能是:獲得保證能容納實現(xiàn)所建立的最大對象的字節(jié)大??;strlen(...)是函數(shù),要在運行時才能計算。參數(shù)必須是字符型指針(char*)。它的功能是:返回字符串的長度。20、隊列和棧有什么區(qū)別? 隊列先進先出,棧后進先出
21、在c語言庫函數(shù)中將一個字符轉(zhuǎn)換成整型的函數(shù)是atool()嗎,這個函數(shù)的原型是什么?
函數(shù)名: atol 功 能: 把字符串轉(zhuǎn)換成長整型數(shù)
用 法: long atol(const char *nptr);
22、對于一個頻繁使用的短小函數(shù),在C語言中應(yīng)用什么實現(xiàn),在C++中應(yīng)用什么實現(xiàn)? c用宏定義,c++用inline
25、直接鏈接兩個信令點的一組鏈路稱作什么? PPP點到點連接
26、軟件測試都有那些種類? 黑盒:針對系統(tǒng)功能的測試
白合:測試函數(shù)功能,各函數(shù)接口
27.確定模塊的功能和模塊的接口是在軟件設(shè)計的那個隊段完成的? 概要設(shè)計階段
28/TCP/IP通信建立的過程怎樣,端口有什么作用? 三次握手,確定是哪個應(yīng)用程序使用該協(xié)議 29/進程和線程的差別。
線程是指進程內(nèi)的一個執(zhí)行單元,也是進程內(nèi)的可調(diào)度實體.與進程的區(qū)別:(1)調(diào)度:線程作為調(diào)度和分配的基本單位,進程作為擁有資源的基本單位
(2)并發(fā)性:不僅進程之間可以并發(fā)執(zhí)行,同一個進程的多個線程之間也可并發(fā)執(zhí)行
(3)擁有資源:進程是擁有資源的一個獨立單位,線程不擁有系統(tǒng)資源,但可以訪問隸屬于進程的資源.(4)系統(tǒng)開銷:在創(chuàng)建或撤消進程時,由于系統(tǒng)都要為之分配和回收資源,導(dǎo)致系統(tǒng)的開銷明顯大于創(chuàng)建或撤消線程時的開銷。30、測試方法
人工測試:個人復(fù)查、抽查和會審
機器測試:黑盒測試和白盒測試
31、Heap與stack的差別。Heap是堆,stack是棧。
Stack的空間由操作系統(tǒng)自動分配/釋放,Heap上的空間手動分配/釋放。Stack空間有限,Heap是很大的自由存儲區(qū)
C中的malloc函數(shù)分配的內(nèi)存空間即在堆上,C++中對應(yīng)的是new操作符。
1、軟件測試(英語:software testing),描述一種用來促進鑒定軟件的正確性、完整性、安全性和質(zhì)量的過程。換句話說,軟件測試是一種實際輸出與預(yù)期輸出間的審核或者比較過程。軟件測試的經(jīng)典定義是:在規(guī)定的條件下對程序進行操作,以發(fā)現(xiàn)程序錯誤,衡量軟件質(zhì)量,并對其是否能滿足設(shè)計要求進行評估的過程。流程:1.軟件測試流程 :需求了解--測試計劃--測試設(shè)計--測試用例編寫--測試執(zhí)行--bug管理跟蹤--測試報告生成
2.bug就是測試過程中發(fā)現(xiàn)的程序缺陷,可以指需求上的,也可以指功能、性能上的
3.bug提交有多種方式,可以通過測試管理工具來管理bug,比如QC等 4.bug的生命周期: 發(fā)現(xiàn)bug(open)--修復(fù)bug(fixed)--關(guān)閉bug(closed)4.軟件測試方法:是指測試軟件性能的方法。包括有:白盒測試、黑盒測試、動態(tài)測試(單元測試、集成測試、系統(tǒng)測試、驗收測試、回歸測試等。)
5.測試工具:三類軟件測試工具: Mercury測試工具,Rational測試工具,Segue測試工具,qtp自動化測試工具和AutoRunner工具
6.測試內(nèi)容:負載壓力、功能測試、白盒測試、測試管理、測試輔助。
2、算法(Algorithm)是一系列解決問題的清晰指令,即能夠?qū)σ欢ㄒ?guī)范的輸入,在有限時間內(nèi)獲得所要求的輸出。圖像處理算法工程師
1、一個算法的優(yōu)劣可以用空間復(fù)雜度與時間復(fù)雜度來衡量。
2、一個算法應(yīng)該具有以下五個重要的特征: 有窮性、確定性、輸入、輸出、可行性。
3、冒泡排序(BubbleSort)一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。基本概念是:依次比較相鄰的兩個數(shù),將小數(shù)放在前面,大數(shù)放在后面。即在第一趟:首先比較第1個和第2個數(shù),將小數(shù)放前,大數(shù)放后。然后比較第2個數(shù)和第3個數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個數(shù),將小數(shù)放前,大數(shù)放后。此第一趟結(jié)束,將最大的數(shù)放到了最后。在第二趟:仍從第一對數(shù)開始比較(因為可能由于第2個數(shù)和第3個數(shù)的交換,使得第1個數(shù)不再小于第2個數(shù)),將小數(shù)放前,大數(shù)放后,一直比較到倒數(shù)第二個數(shù)(倒數(shù)第一的位置上已經(jīng)是最大的),第二趟結(jié)束,在倒數(shù)第二的位置上得到一個新的最大數(shù)(其實在整個數(shù)列中是第二大的數(shù))。如此下去,重復(fù)以上過程,直至最終完成排序。由于在排序過程中總是小數(shù)往前放,大數(shù)往后放,相當于氣泡往上升,所以稱作冒泡排序。
4快速排序:基本思想是:通過一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按此方法對這兩部分數(shù)據(jù)分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數(shù)據(jù)變成有序序列。
算法的時間復(fù)雜度是一個函數(shù),它定量描述了該算法的運行時間。一個程序的空間復(fù)雜度是指運行完一個程序所需內(nèi)存的大小。
第四篇:c++課程設(shè)計總結(jié)
課程設(shè)計總結(jié)
經(jīng)過一個學(xué)期對《C++程序設(shè)計》的學(xué)習(xí),我學(xué)習(xí)到了基本的理論知識,了解到了C++語言程序設(shè)計的思想,這些知識都為我的課程實踐和進一步的學(xué)習(xí)打下了堅實的基礎(chǔ)。在為期近兩周的C++課程設(shè)計中,我體會頗多,學(xué)到了很多東西。我加強了對C++程序設(shè)計這門課程的認識,并且復(fù)習(xí)了自己以前學(xué)習(xí)到的知識。這些都使得我對計算機語言的學(xué)習(xí)有了更深入的認識!總之,通過這次課程設(shè)計,我收獲頗豐,相信會為自己以后的學(xué)習(xí)和工作帶來很大的好處。像職工信息表這樣的程序設(shè)計,經(jīng)歷了平時在課堂和考試中不會出現(xiàn)的問題和考驗。而這些問題,這并不是我們平時只靠課本,就可以輕易解決的。所以,鍛煉了我們挑戰(zhàn)難題,學(xué)會用已掌握的知識去解決具體問題的能力,進一步培養(yǎng)了獨立思考問題和解決問題的能力。特別是學(xué)會了在Visual C++中如何調(diào)試程序的方法。當然,老師的指導(dǎo)和同學(xué)的幫助也是不可忽視的,他們給了我許多提示和幫助,教會了我編譯復(fù)雜程序的方法。
在老師和同學(xué)的幫助下,通過自己的努力,終于完成了這次職工信息表的簡單課程設(shè)計。我經(jīng)過這段時間的編程,對其中的艱辛,我是深有體會。從剛開始的選擇程序、理解程序到后來的調(diào)試程序以及改進程序這個過程中,我遇到了各種各樣的困難和挫折。但是我堅定信念,對自己充滿了信心,想盡一切辦法克服重重困難。
通過課程設(shè)計的訓(xùn)練,我進一步學(xué)習(xí)和掌握了對程序的設(shè)計和編寫,從中體會到了面向?qū)ο蟪绦蛟O(shè)計的方便和巧妙。懂得了在進行編寫一個程序之前,要有明確的目標和整體的設(shè)計思想。另外某些具體的細節(jié)內(nèi)容也是相當?shù)闹匾_@些寶貴的編程思想和從中摸索到的經(jīng)驗都是在編程的過程中獲得的寶貴財富。這些經(jīng)驗對我以后的編程會有很大的幫助的,我要好好利用。
雖然這次課程設(shè)計是在參考程序的基礎(chǔ)之上進行的,但是我覺得對自己是一個挑戰(zhàn)和鍛煉。我很欣慰自己能在程序中加入自己的想法和有關(guān)程序內(nèi)容,也就是對它的程序改進了一番改進,并有創(chuàng)新。但是我感覺自己的創(chuàng)新還不夠典型,總之還不是很滿意。另外由于時間的緊迫和對知識的了解不夠廣泛,造成了系統(tǒng)中還存在許多不足,功能上還不夠完善。以后我會繼續(xù)努力,大膽創(chuàng)新,爭取能編寫出透射著自己思想的程序。這次課程設(shè)計讓我充分認識到了自己的不足,認識到了動手能力的重要性。我會在以后的學(xué)習(xí)中更加努力鍛煉自己,提高自己,讓自己寫出更好更完善的程序,為以后的編程打好基礎(chǔ)!
總而言之,這次C++程序設(shè)計實踐讓我收獲很大。
計算機科學(xué)與技術(shù)13-2班
2010年7月4日
第五篇:C和C++總結(jié)
1C中分為這幾個存儲區(qū): 棧,堆,全局區(qū)(靜態(tài)區(qū))—靜態(tài)變量,常量區(qū)
C++中分為這幾個存儲區(qū):棧,堆(new創(chuàng)建,delete結(jié)束或者操作系統(tǒng)自動回收),全局區(qū)(靜態(tài)區(qū)),自由存儲區(qū)-(malloc創(chuàng)建,free結(jié)束),常量存儲區(qū),2看到一本書上寫了進程通信方式有如下:
1)信號 ——軟中斷,2)管道
3)文件和記錄鎖定
4)消息隊列
5)信號量
6)共享內(nèi)存
Unix的啟動順序排序。
第一步:通過/boot/vm進行啟動 linux內(nèi)核
第二步:init /etc/inittab
第三步:啟動相應(yīng)的腳本,并且打開終端
rc.sysinit
rc.d(里面的腳本)
rc.local
第四步:啟動login登錄界面 login
第五步:在用戶登錄的時候執(zhí)行sh腳本的順序:每次登錄的時候都會完全執(zhí)行的/etc/profile.d/file
/etc/profile
/etc/bashrc
/root/.bashrc
/root/.bash_profile
Linux中查看目錄大小的命令:du –sh filename
修改文件屬性的命令是:chmod 777 file-R
切換為其他用戶身份的命令是:du
第一次:第一次握手:建立連接時,客戶端發(fā)送syn包(syn=j)到服務(wù)器,并進入SYN_SEND狀態(tài),等待服務(wù)器確認;SYN:同步序列編號(Synchronize Sequence Numbers)。
第二次:第二次握手:服務(wù)器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發(fā)送一個SYN包(syn=k),即SYN+ACK包,此時服務(wù)器進入SYN_RECV狀態(tài);
第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認包
ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務(wù)器進入established狀態(tài),完成三次握手
指令用途
#空指令,無任何效果
#include包含一個源代碼文件
#define定義宏
#undef取消已定義的宏
#if如果給定條件為真,則編譯下面代碼
#ifdef如果宏已經(jīng)定義,則編譯下面代碼
#ifndef如果宏沒有定義,則編譯下面代碼
#elif如果前面的#if給定條件不為真,當前條件為真,則編譯下面代碼
#endif結(jié)束一個#if……#else條件編譯塊
#error停止編譯并顯示錯誤信息
static全局變量與普通的全局變量有什么區(qū)別:static全局變量只初使化一次,防止在其他文件單元中被引用;
static局部變量和普通局部變量有什么區(qū)別:static局部變量只被初始化一次,下一次依據(jù)上一次結(jié)果值;
static函數(shù)與普通函數(shù)有什么區(qū)別:static函數(shù)在內(nèi)存中只有一份,普通函數(shù)在每個被調(diào)用中維持一份拷貝