、簡答題
1. 什麼是類?什麼是物件?物件與類的關係是什麼?
答:類就是相同的資料和相同的一組物件的集合,即類是對具有相同資料結構和相同操作的一類物件的描述;
物件是描述其屬性的資料以及對這些資料施加的一組操作封裝在一起構成的統一體,物件可以認為是:資料+操作;
類和物件之間的關係是抽象和具體的關係。
2. 建構函式和析構函式的主要作用是什麼?他們各有什麼特性?
答:建構函式主要用於為物件分配空間,進行初始化。建構函式除了具有一般成員函式的特徵外,還具有一些特殊的性質:
(1)建構函式的名字必須與類名相同
(2)建構函式可以有任意型別的引數,但不能指定返回型別。它有隱含的返回值,該值由系統內部使用。
(3)建構函式是特殊的成員函式,函式體可寫在類體內,也可寫在類體外。
(4)建構函式可以過載,即乙個類中可以定義多個引數個數或引數型別不同的建構函式。
(5)建構函式被宣告為公有函式,但它不能像其他成員函式那樣被顯式地呼叫,它是在定義物件的同時被呼叫的。
析構函式也是一種特殊的成員函式。它執行與建構函式相反的操作,通常用於撤消物件時的一些清理任務,如釋放分配給物件的記憶體空間等。析構函式有以下一些特點:
(1)析構函式與建構函式名字相同,但它前面必須加乙個波浪號(~);
(2)析構函式沒有引數,也沒有返回值,而且不能過載。因此在乙個類中只能有乙個析構函式;
(3)當撤消物件時,編譯系統會自動地呼叫析構函式。
3. 有哪幾種繼承方式?每種方式的派生類對基類成員的繼承性如何?
答:三種繼承方式(公有public、保護protected、私有private);繼承性可參見教材p143。
基類(父類)得私有成員,派生類(子類)都不能訪問;
基類得公有成員,派生類得繼承方式決定了其函式得形式!
基類得保護成員在派生類得公有繼承中也是保護型別!
4. 簡要敘述友元運算子函式和成員運算子函式有什麼不同點?
答:(1)對雙目運算子而言,成員運算子函式帶有乙個引數,而友元運算子函式帶有兩個引數;對單目運算子而言,成員運算子函式不帶引數,而友元運算子函式帶乙個引數。
(2)雙目運算子一般可以被過載為友元運算子函式或成員運算子函式,但某些情況,必須使用友元函式。
5. 派生類建構函式和析構函式的執行順序是怎樣的?
答:當建立物件時,編譯系統會自動呼叫建構函式。當撤銷物件時,編譯系統會自動呼叫析構函式。當建立派生類的物件時,首先執行基類的建構函式,然後執行派生類的建構函式。
當撤銷物件時,則先執行派生類的析構函式,然後再執行基類的析構函式。
6. 什麼是虛函式?虛函式與函式過載有哪些相同點和不同點?
答:虛函式是乙個在某基類中宣告為virtual並在乙個或多個派生類中被重新定義的成員函式。宣告虛函式的格式如下:
virtual 《返回值型別》 《函式名》(《參數列》);
在派生類中重新定義基類的虛函式是函式過載另一種形式,但它不同於一般的函式過載。
當普通的函式過載時,其函式的引數或引數型別必須有所不同,函式的返回型別也可以不同。
對於虛函式,如果僅僅是返回型別不同,其餘均相同,系統會給錯誤資訊;若僅僅函式名相同,而引數的個數、型別或順序不同,系統將它作為普通的函式過載,這時虛函式的特性將丟失。
7. 函式過載
答:函式過載是指具有相似功能的不同函式使用同一函式名,但這些同名函式的引數型別、引數個數、返回值、函式功能可以不同。編譯系統將根據函式引數的型別和個數來判斷使用哪乙個函式。體現了c++對多型性的支援。
8. 函式模板
答:可以把邏輯功能相同而函式引數和返回值型別不同的多個過載函式用乙個函式來描述。引數化的函式稱為函式模板,代表的是乙個函式家族。定義:
template 《模板參數列》
《返回值型別》《函式名》(《參數列》)
9. 類的繼承和派生
答:類的繼承就是根據乙個類建立乙個新類的過程。
類的派生就是從已有類產生新類的過程。
10. 多型性及其實現
答:多型性是指發出同樣的訊息被不同型別的物件接收時導致完全不同的行為。
多型的實現:
a) 函式過載
b) 運算子過載
c) 虛函式賦值相容規則
11. 賦值相容規則
答:乙個公有派生類的物件在使用上可以被當作基類的物件,反之則禁止。具體表現在:
a) 派生類的物件可以被賦值給基類物件。
b) 派生類的物件可以初始化基類的引用。
c) 指向基類的指標也可以指向派生類
12. 聯編:靜態聯編,動態聯編
答:聯編又稱繫結:是指電腦程式自身彼此關聯的過程,也就是把乙個函式名和乙個函式體聯絡在一起的過程
靜態聯編:在編譯過程中,編譯系統可以根據型別匹配等特徵來確定程式中呼叫操作與執行某個同名函式實現之間的關係,即確定某乙個同名函式到底是要呼叫哪一段函式實現**。
函式過載和運算子過載就是通過靜態聯編方式實現的編譯時的多型的體現。
靜態聯編的優點是函式呼叫速度快、效率較高,缺點是程式設計不夠靈活
動態聯編:只有在執行程式時才能確定將要呼叫的函式。這種在執行階段進行的聯編稱為動態聯編。
動態聯編的優點是提供了更好的程式設計靈活性、問題抽象性和程式易維護性,缺點是與靜態聯編相比,函式呼叫速度慢
13. 純虛函式和抽象類
答:帶有純虛函式的類稱為抽象類:
class 類名
C 總結 物件導向
c 很多時候被認為是 c with class 事實上,c 引入了完整的物件導向思想,並且為支援這種思想增加了很多基礎結構。類與結構體 c 中的類和結構體是非常相似的。c 的繼承 c 中沒有介面的關鍵字,但是有介面的思想。事實上乙個純虛函式就是乙個介面。正因為沒有介面的概念,所以,c 沒有實現 im...
C 專題 物件導向總結
1.什麼是類?什麼是物件?物件與類的關係是什麼?答 類就是相同的資料和相同的一組物件的集合,即類是對具有相同資料結構和相同操作的一類物件的描述 物件是描述其屬性的資料以及對這些資料施加的一組操作封裝在一起構成的統一體,物件可以認為是 資料 操作 類和物件之間的關係是抽象和具體的關係。2.建構函式和析...
物件導向總結
成員變數 1.類中,方法外 2.建立物件存在與堆中,物件被 時一併消失 3.成員變數有預設值 區域性變數 1.方法中 2.呼叫方法存在於棧幀中,方法呼叫完畢隨棧幀一併消失 3.區域性變數沒有預設值 public class koo 重寫遵循 兩同兩小一大 兩同 1.方法名稱相同 2.引數列表相同 兩...