用c設計類該類僅僅被允許例項化一次

時間 2022-02-08 20:10:03

1樓:愚家焮

只允許被例項化一次的叫做單例模式.

是程式設計模式裡面的.

單例模式有許多種實現方法,在c++中,甚至可以直接用一個全域性變數做到這一點,但這樣的**顯的很不優雅。 使用全域性物件能夠保證方便地訪問例項,但是不能保證只宣告一個物件——也就是說除了一個全域性例項外,仍然能建立相同類的本地例項。

《設計模式》一書中給出了一種很不錯的實現,定義一個單例類,使用類的私有靜態指標變數指向類的唯一例項,並用一個公有的靜態方法獲取該例項。

單例模式通過類本身來管理其唯一例項,這種特性提供瞭解決問題的方法。唯一的例項是類的一個普通物件,但設計這個類時,讓它只能建立一個例項並提供對此例項的全域性訪問。唯一例項類singleton在靜態成員函式中隱藏建立例項的操作。

習慣上把這個成員函式叫做instance(),它的返回值是唯一例項的指標。

定義如下:

class csingleton

static csingleton *m_pinstance;

public:

static csingleton * getinstance()

};使用者訪問唯一例項的方法只有getinstance()成員函式。如果不通過這個函式,任何建立例項的嘗試都將失敗,因為類的建構函式是私有的。getinstance()使用懶惰初始化,也就是說它的返回值是當這個函式首次被訪問時被建立的。

2樓:匿名使用者

沒看明白 主要說明下腰算什麼?

c++求大神講解一下第18題怎麼做,什麼意思

3樓:聽不清啊

執行此語句後,x的值為15,然後pa後移一位,指向17,所以*pa的值就是17。

先設計點類(Point),該類的資料成員包括點的x座標和y座標,成員函式實現的

class point point int xx,int yy point int x int y class line public pointline point pa,point pb float getlinelengh 獲取直線長度float getlineascent 獲取直線斜率 fl...

C 程式設計設計日期類,C 程式設計 設計一個日期類

設計一個日期類.要求 過載帶引數建構函式 int year int month,int day 和預設建構函式,前者要求不合要求的資料 年月日超出範圍 丟擲異常 計算出該日是星期幾,網上找公式 過載 操作,一個日期物件和天數相加 符合交換律 過載 操作,兩天日期物件相減返回相差天數。過載 操作當前日...

用c語言設計課程資訊管理系統,用C語言設計一個課程資訊管理系統

include include include include using namespace std struct list typedef struct list node typedef node link 函式宣告 link create link head link search link...