16.c/c++程式設計師面試寶典-虛函式與純虛函式
虛函式的主要作用是建立抽象模型,從而可以達到方便擴充套件系統的目的。純虛函式時指被標明為不具體實現的虛函式,是一種特殊的虛函式。
面試題81 虛函式與純虛函式的區別***
分析:虛函式必須是基類的非靜態成員函式,其訪問許可權可以是protected或public,在基類的類定義中定義虛函式的形式為:
virtual 函式返回值型別 虛函式名(形參表)
虛函式擴充套件了派生類物件中隱藏基類函式的概念,當程式處於相似類家族的異構物件集合時,要使用到這些函式。
純虛函式是一種特殊的虛函式,它的一般格式如下:
class《類名》
在很多情況下,基類中不能對虛函式給出有意義的實現,而把它說明為純虛函式,它的實現留給該基類的派生類去做。這就是純虛函式的作用。
虛函式和純虛函式的區別:純虛函式是虛函式的乙個子集,用於抽象類,含有純虛函式的類就是抽象類,它不能生成物件。
【答案】純虛函式是虛函式的乙個子集。
面試題82 如何使用純虛函式***
分析:為了方便使用多型特性,程式設計者常常需要在基類中定義虛函式。在很多情況下,基類本身生成物件是不合理的,例如,動物作為乙個基類可以派生出猴子、犀牛等子類,但動物本身生成物件明顯不合常理。
為了解決上述問題,引入了純虛函式的概念,將函式定義為純虛函式,則編譯器要求在派生類中必須予以過載以實現多型性,同時含有純虛函式的類稱為抽象類,不不能生成物件。這樣就很好地解決了上述兩個問題。乙個純虛函式使用的示例**如下:
class a //定義基類 ;
class b : public a //定義子類 ;
int main()
上述**中,f1()是乙個普通的過載。呼叫m_j->f1();會去呼叫a類中的f1,它是在程式設計者寫好**的時候就定好的。也就是根據它是由a類定義的,這樣就呼叫這個類的函式。f2()是虛函式。呼叫m_j->f2();會呼叫m_j到儲存的物件中,對應的這個函式,這是由於new的b物件。f3()和f2()一樣,只是在基類中不需要寫函式實現。
【答案】純虛函式用來定義沒有意義的實現,用於抽象類中需要交給派生類具體實現的方法。
C C 程式設計師面試寶典 2
9.關聯式資料庫的正規化 10.資料庫操作中的事務 事務的4個特性 11.數字矩陣的生成 對應的 如下 include include include define print arr2d arr,n else print arr2d arr,n 1 2 6 7 15 3 5 8 14 16 4 9...
程式設計師面試寶典 C C 記憶體分類
在進行c c 程式設計時,需要程式設計師對記憶體的了解比較精準。經常需要操作的記憶體可分為以下幾個類別。棧區 stack 由編譯器自動分配和釋放,存放函式的引數值 區域性變數的值等。其操作方式類似於資料結構中的棧。堆區 heap 一般由程式設計師分配和釋放,若程式設計師不釋放,程式節束時可能由操 作...
程式設計師面試寶典
據統計,80 的簡歷都是不合格的。不少人事管理者抱怨收到的許多簡歷在格式上很糟糕。簡歷應該如何做到在格式上簡潔明瞭,重點突出?求職信應該如何有足夠的內容推銷自己?如何控制長度,言簡意賅?相信讀了本章你會對簡歷的撰寫有乙個新的認識。2.1 簡歷注意事項 1 簡歷不要太長 一般的簡歷普遍都太長。其實簡歷...