const 一問 |
尚未結案
|
polongkon
一般會員 發表:8 回覆:19 積分:5 註冊:2004-04-16 發送簡訊給我 |
|
fffhghgjh
一般會員 發表:2 回覆:33 積分:17 註冊:2004-12-23 發送簡訊給我 |
|
polongkon
一般會員 發表:8 回覆:19 積分:5 註冊:2004-04-16 發送簡訊給我 |
|
fffhghgjh
一般會員 發表:2 回覆:33 積分:17 註冊:2004-12-23 發送簡訊給我 |
|
pwipwi
版主 發表:68 回覆:629 積分:349 註冊:2004-04-08 發送簡訊給我 |
polongkon你好:
我想你應該聽過this指標吧?一般在member function後面加上const,可以想成是把"this"指標宣告成 "const MyClassType* this" this宣告成const後,就無法透過他修改class的data member,而且只能呼叫同樣是const的成員函式。 加上const的好處是,增加程式的整體讀寫邏輯限制,靠compiler的警示讓你可以發現潛在的bug。 以一個例子來說:如果你的class中有一個getPosition函式,在設計前假設:"getPosition時不會修改到class本身"。萬一實作這個函式時不小心做了寫入的相關指令(比如修改了class中的資料)。這個邏輯上的錯誤會留到測試時才發現bug,而且發生bug時還要經過很麻煩的步驟才會找出錯誤是在getPosition裡面。要是一開始就加上const,這個runtime的錯誤會提早在compiler time被發現,大大節省維護和測試的時間。 有人會想:這麼簡單的假設,怎麼可能會出錯?事實上物件設計時,讀寫限制的邏輯可能可以弄的很複雜,一個緊咬一個。有const的幫助對大物件的維護有不少的功勞。我就常從const中,找到設計的錯誤,而且這些錯誤如果不加const,通常都要到軟體測式時才發現...會花上不少的成本。 因此我聽過有不少人建議,"如果你class裡的function可以加上const。請務必要加上const"!!
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |