類設計者的核查表

類設計者checkList

  • 類需要構造函數(shù)嗎荣回?
    需要通過構造函數(shù)隱藏內(nèi)部工作方式的才需要提供構造函數(shù)吸奴。
  • 類需要私有成員嗎隐绵?
    提供私有成員的好處是:外部只能通過成員函數(shù)進行訪問洞坑;私有成員的變化可以被類迅速感知盲链。
  • 類需要提供無參構造函數(shù)嗎?
    提供無參構造函數(shù)可以不用顯示的初始化迟杂,example:T t;
    提供無參構造函數(shù)可以定義該類型的數(shù)組刽沾,example: T t[100];
  • 類的構造函數(shù)需要初始化全部的成員嗎?
    一般構造函數(shù)需要明確的初始化成員逢慌,為對象確立明確的狀態(tài)悠轩。但是有些屬性僅在對象存在一段時間以后才會有意義。針對這個問題沒有明確的答案攻泼。這個問題是為了我們設計類的時候進行思考。
  • 類需要析構函數(shù)嗎鉴象?
    明確一點就可以:這個類的對象是否持有某些資源忙菠,這些資源并不會在成員函數(shù)中自動申請和釋放,此時需要設計析構函數(shù)纺弊。
  • 類的析構函數(shù)需要virtual關鍵字修飾嗎牛欢?
    如果該類不會被用作基類,或者不存在通過基類的指針指向派生類對象或者引用派生類對象的場景下才不需要虛析構函數(shù)淆游。
  • 類需要復制構造函數(shù)嗎傍睹?
    復制構造函數(shù):
Type(const Type& other) {
     // init members here!
}

如果類包含某些申請的資源的指針或者handle,就會出現(xiàn)按照c++默認復制構造策略產(chǎn)生的對象包含了指向同一資源的指針或者handle犹菱,會產(chǎn)生多次釋放的問題拾稳。因此需要提供一個復制構造函數(shù)。

  • 類需要重載賦值運算符嗎腊脱?
    一般提供了復制構造函數(shù)以后也需要提供operator=的重載访得。
  • 類的賦值操作符能否正確的將對象本身賦值給對象本身?
    錯誤的做法是沒有判斷賦值運算的other和this是不是同一個對象陕凹,如果是同一個對象的情況悍抑,先釋放在拷貝會出現(xiàn)還沒有拷貝就已經(jīng)把原來的對象銷毀了鳄炉。
// 正確的實現(xiàn)
Type& operator=(const Type& other) {
    // 1. check is other and *this the same?
    if(&other != this) {
        // 2. do the assignment
        // delete the resource and make a copy by creating a new one 
    }
    return *this;
}

或者采用先復制到臨時變量,然后在銷毀原有對象搜骡,最后在復制回去的方式拂盯。

  • 類需要定義關系運算嗎?類需要定義算數(shù)運算符嗎记靡?
    如果類的對象需要比較大小谈竿,判斷相等等操作,則需要定義關系運算符簸呈。
    如果類的對象需要進行自增榕订,自減,+=和-=等操作蜕便,則需要定義算數(shù)運算符劫恒。
  • 刪除數(shù)組時是否正確的使用了delete [] ?
    delete [] pointer;
  • 類的復制構造函數(shù)轿腺,賦值操作符的參數(shù)都加上const的修飾了嗎两嘴?
    被復制的參數(shù)不應該被改變。
  • 如果成員函數(shù)的參數(shù)有引用族壳,是否應該加上const修飾憔辫?
    如果希望修改參數(shù),則不應該加上const修飾符仿荆,否則應該加上贰您。
  • 記得適當聲明成員函數(shù)為const的了嗎?
    確定不改變對象狀態(tài)的成員函數(shù)應該被聲明為const拢操,否則不能將該成員函數(shù)應用于const修飾的對象和引用锦亦。

總結

這份問題清單的目的是提醒我在設計一個類的時候,應該按照這個checkList進行思考令境,避免出現(xiàn)一些意外的情況杠园。
還一個功能就像書里面說的一樣,是為幫助我們回憶起可能忘掉了的事情舔庶,對設計的類進行例行檢查抛蚁。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市惕橙,隨后出現(xiàn)的幾起案子瞧甩,更是在濱河造成了極大的恐慌,老刑警劉巖吕漂,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件亲配,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機吼虎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門犬钢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人思灰,你說我怎么就攤上這事玷犹。” “怎么了洒疚?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵歹颓,是天一觀的道長。 經(jīng)常有香客問我油湖,道長巍扛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任乏德,我火速辦了婚禮撤奸,結果婚禮上,老公的妹妹穿的比我還像新娘喊括。我一直安慰自己胧瓜,他們只是感情好,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布郑什。 她就那樣靜靜地躺著府喳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蘑拯。 梳的紋絲不亂的頭發(fā)上钝满,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機與錄音申窘,去河邊找鬼舱沧。 笑死,一個胖子當著我的面吹牛偶洋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播距糖,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼玄窝,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了悍引?” 一聲冷哼從身側(cè)響起恩脂,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎趣斤,沒想到半個月后俩块,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年玉凯,在試婚紗的時候發(fā)現(xiàn)自己被綠了势腮。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡漫仆,死狀恐怖捎拯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情盲厌,我是刑警寧澤署照,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站吗浩,受9級特大地震影響建芙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜懂扼,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一禁荸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧微王,春花似錦屡限、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至罩旋,卻和暖如春啊央,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背涨醋。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工瓜饥, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人浴骂。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓乓土,卻偏偏與公主長得像,于是被迫代替她去往敵國和親溯警。 傳聞我的和親對象是個殘疾皇子趣苏,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1、類需要一個構造函數(shù)么梯轻? 2食磕、數(shù)據(jù)成員是私有的么? 3喳挑、需要一個無參的構造函數(shù)么彬伦? 4滔悉、是不是每個構造函數(shù)初始化...
    趙者也閱讀 133評論 0 0
  • 3. 類設計者工具 3.1 拷貝控制 五種函數(shù)拷貝構造函數(shù)拷貝賦值運算符移動構造函數(shù)移動賦值運算符析構函數(shù)拷貝和移...
    王偵閱讀 1,804評論 0 1
  • 編譯器生成的成員函數(shù) 默認構造函數(shù): 若用戶沒有定義構造函數(shù),則系統(tǒng)自動生成默認構造函數(shù) 用戶定義了構造函數(shù)单绑,則必...
    禿頭俠JeFF閱讀 258評論 0 0
  • c++和 java有很多的小點不一樣回官,今天來總結下c++在類設計方面的知識點,并且比較下和java的異同 構造函數(shù)...
    某昆閱讀 1,366評論 0 1
  • 久違的晴天询张,家長會孙乖。 家長大會開好到教室時,離放學已經(jīng)沒多少時間了。班主任說已經(jīng)安排了三個家長分享經(jīng)驗。 放學鈴聲...
    飄雪兒5閱讀 7,523評論 16 22