我將使用下面的(簡單)接口作爲一個例子:const函數和在C++接口
struct IObject
{
virtual ~IObject() {}
virtual std::string GetName() const = 0;
virtual void ChangeState() = 0;
};
從邏輯上講,GetName
應該是一個const
成員函數而ChangeState
不應該。
儘管我目前看到的所有代碼都不遵循這個邏輯。即上述示例中的GetName
不會被標記爲const
成員函數。
這是懶惰/粗心還是有正當理由呢?在邏輯上要求我的客戶執行const
成員函數時,我的主要缺點是什麼?
編輯:感謝您的答覆大家。我認爲這幾乎是一致的:懶惰/無知是我所看到的原因。
無能/懶惰/不小心 – 2010-05-19 16:39:28
不要忘記無知 - 在我的經驗糟糕的代碼的主要原因。 – 2010-05-19 16:43:25
@尼爾:不幸的是我必須同意......我現在正在咆哮:p – 2010-05-19 16:58:45