雖然通過覆蓋率回顧了我們的C++類,但它在特定的類上顯示了錯誤消息。該類如下:類聲明中使用的類標識符。這是一個好習慣嗎?
class InputRecord
{
/* Construtor */
...
InputRecord::RejectRecord();
...
/* Destructor */
}
在類內部使用標識符有什麼意義?遵循這一點是否是一個好習慣?
感謝, 馬修禮居
雖然通過覆蓋率回顧了我們的C++類,但它在特定的類上顯示了錯誤消息。該類如下:類聲明中使用的類標識符。這是一個好習慣嗎?
class InputRecord
{
/* Construtor */
...
InputRecord::RejectRecord();
...
/* Destructor */
}
在類內部使用標識符有什麼意義?遵循這一點是否是一個好習慣?
感謝, 馬修禮居
在GCC編譯(V4.1以上),這將失敗,出現「錯誤:額外的資格」進行編譯。因此不要把它放在那裏是一個好習慣!
見here其中討論了額外的資格不合法的C++。
天兒真好,
我一直認爲,這類標識的實施只用在類的定義是沒有必要的。
類聲明是
class InputRecord;
你有什麼有一個類定義。
class InputRecord
{
/* Construtor */
...
RejectRecord();
...
/* Destructor */
}
然後在.cpp文件你有實現
InputRecord::RejectRecord()
{
...
}
即使這是我的理解。在作出任何改變計劃的決定之前,我只想確認我的理解。總之感謝:-) – 2009-11-25 12:07:56
在一般情況下,不會有其中由明確的InputRecord::
您的代碼示例中提供的消歧可能是任何東西的情況下除了冗餘。
如果代碼是做複雜的操作,其中特定類是相關的(說你把它傳遞到有陰影的版本一個基類),那麼它可以幫助代碼的清晰度,使之明確。
這有點像使用this->
(或在C#/ Java中爲this.
)。
個人而言,我會刪除任何這些多餘的符,找到讓整個點的另一種方式。
的答覆其實我覺得用C++和Java應該強制人們使用這個成員變量,所以我們沒有到了他們的名字mValue,m_value,m_Value,VALUE_等。 – 2009-11-25 14:48:31
我們必須將它們命名爲'm ...'? :P從函數編程的角度來看,您希望在使用狀態之前先考慮使用/從OO的角度來看,它將是'正常的'。對於某些類型的東西,這看起來真的很醜。有些編程「標準」說沒有前綴,因爲它應該從代碼中清楚它是否是成員或參數 - 如果您正在編寫正確的代碼,這很好。 (我個人不使用匈牙利語法,而是使用[_']知道它的錯誤,因此我不得不在前綴'this.'處加上前綴]。我認爲這是一個沒有OSFA解決方案的明確例子。 – 2009-11-25 15:10:29
在類的定義,我只用類標識符,如果我有一個類似命名的(或相同)的類的私有成員參數。它避免了含糊不清,並且使代碼更易於同時閱讀。我想不出你需要使用它的另一種情況。
不僅僅是gcc,除Visual Studio之外的任何編譯器。 – 2009-11-25 15:36:41