C 實現乙個不能被繼承的類

2021-07-15 03:06:49 字數 428 閱讀 7518

要設計乙個不能被繼承的類,考慮c++11的新特性的話,有三種方法:

(1)就是將該類的建構函式和析構函式設為private(或者僅僅將析構函式設為private),這樣派生類無法呼叫基類的建構函式和析構函式,從而不能繼承。要建立物件,可以在該類中設乙個static成員函式,提供返回乙個該類物件指標,這種方法比較普遍就不細說。需要注意的是這種方法導致物件只能在heap中產生。那如何能構造乙個正常物件的class而又不能被繼承呢?

(2)c++11提供final關鍵字。final關鍵字的作用:1.用於防止型別被繼承;2.用於防止虛函式被重寫。 

(3)利用虛繼承

#include using namespace std;

templateclass a{

friend t;

private:

a(){cout<<"a()"<

C 實現乙個不能被繼承的類

題目 用c 設計乙個不能被繼承的類 1 不能被繼承?按照繼承的理論,只要把類的建構函式設為私有,即可解決問題。此時子類就沒有辦法訪問基類的建構函式,從而就阻止了進行子類構造物件的任務實現,也就達到了不可繼承的目的。問題 如何產生這個類的例項物件和釋放物件呢?2 顯然定義靜態方法,在方法內部實現乙個物...

實現乙個不能被繼承的類

分析 普通類都能被繼承,但當這個類的建構函式被宣告為私有時,這個類便不能被繼承,同時也不能在類外面定義該型別的物件,該怎麼解決這個問題呢?方法一 類物件的構造是通過建構函式實現的,如果將建構函式宣告為私有或者保護型別,那麼在類外是不能呼叫建構函式的,也就不能在類定義出物件。對此,我們可以在類裡定義乙...

用C 實現乙個不能被繼承的類

一道筆試題的思考 記得,找工作時,遇到了這樣的一道筆試題。記不清是那個公司的筆試題,反正覺得自己當時還真費了一點功夫的,但是也就搞定了一部分,結果還是被另一部分給鄙視啦!現在靜下來分析實現如下 題目 用c 設計乙個不能被繼承的類 不能被繼承?不能被繼承?不能被繼承?按照繼承的理論知識分析,我們只要把...