考慮以下情況最佳實踐從一個const-方法
class A
{
public:
void someFunc() const
{
b->nonConstFunction(); //this is a non const function in the class B
}
private:
B* b;
};
在恆定函數someFunc()
訪問部件的指針的一個非const方法時,我可以調用b
任何非恆定方法它將編譯。所以函數someFunc()
在某種程度上不是一個真正的const函數。但是,所有最佳實踐都表示,應該在任何地方放置const
。這個建議是否也適用於這裏? 可能會聲明函數void someFunc()
非常量更爲誠實然後void someFunc() const
。或者可能有更一般的建議來處理這類事情?
這實際上取決於'A類'代表什麼。這裏沒有一個適合所有人的尺寸。 – juanchopanza
看看['mutable'](http://en.cppreference.com/w/cpp/language/cv)=>對於這樣的情況,它是完美的:定義一個可以在const環境中修改的變量因爲無論類實例如何,它都不在乎(恕我直言,一個很好的例子是互斥體=>互斥體必須在const env中修改) – Garf365
如果您有權訪問副本,您可能需要閱讀Effective C++中的項目邏輯與逐位常數;這正是您目前的困惑。 [這個問題](http://stackoverflow.com/questions/3830367/difference-between-logical-and-physical-const-ness#3830484)對此有一些討論。 – TartanLlama