在試圖刷新我的C++時,我一直在試圖找出創建訪問器的最佳實踐方式。C++ const訪問器和引用最佳實踐
我想澄清我的理解,並找出我所做的是對的。我有幾個問題,但它們看起來非常簡單,所以我將它們全部引入了這個Stack Overflow問題。
以下是代表什麼我「想」是做事的正確方法是一些示例代碼:
class MyClass
{
private:
std::string StringMember_;
int IntMember_;
public:
MyClass(const std::string &stringInput, const int &intInput) : StringMember_(stringInput), IntMember_(intInput)
{
}
const std::string &StringMember() const
{
return StringMember_;
}
void StringMember(const std::string &stringInput)
{
StringMember_ = stringInput;
}
const int &IntMember() const
{
return IntMember_;
}
void IntMember(const int &intInput)
{
IntMember_ = intInput;
}
};
我的問題是:
凡我訪問器返回const
引用變量,即const std::string
,這意味着它(我的類的成員變量)不能改變。那是對的嗎?
方法的主體之前的最後const
指示該方法所屬的類的成員不能改變,除非它們被指定爲mutable
。這是否正確?
如果我傳遞的是const
方法參數,這意味着我確保這些參數在傳入時始終保存,從而保護傳入的所有原始變量不被方法體更改。這是否正確?
關於mutable
關鍵字,在什麼情況下我真的想要使用它?我一直在努力想出一個很好的場景,我需要一個需要修改類成員的const方法。
訪問者似乎是一個好主意,即使對於永遠不會公開的數據,因爲它確保了單點入口,允許更容易的調試等等。我是否在這裏考慮了正確的思路,或者這實際上完全沒有意義,並且不需要私人訪問者?
從純粹的句法角度來看,我應該寫作我的參考文獻,如const int& intInput
或const int &intInput
。這個符號的位置究竟在哪裏,還是僅僅是個人喜好的問題?
最後,我在上面的例子中做了什麼?我打算開始制定一個更大的個人項目,並且我希望在這些核心基礎知識之後再開始解決問題。
我用這個作爲參考:https://isocpp.org/wiki/faq/const-correctness
爲什麼downvote?另外,我已經更新了標題,嘗試使它更清晰。 – Interminable
我的猜測是,這是因爲你問了不止一個問題。我們傾向於每個問題提出一個問題。也就是說,除了最後一個問題以外的所有問題都是微不足道的,所以在我看來沒問題。然而,最後一個問題是,對於計算器而言,這兩者都過於寬泛且意見相左。 – user2079303
我確實認爲他們對於個別問題來說過於微不足道。 至於最後一個,我主要是想知道我是否在做任何我沒有發現的錯誤。 – Interminable