先給出一段代碼
class A
{
int *x;
public:
int *f() const { return x; }
};
成員函式f回傳指向私有成員 x 的非常量指標,我認為這會修改成員x ,對吧?
f 是 const成員函式,我應該在回傳型別前面添加 const 嗎?
const成員函式應該保證的是,它不能更改任何資料成員,
就我而言,函式 f 并沒有修改類A 的資料成員x ,但可以修改x 指向的內容,所以我的問題是,這是否違反了const函式應保證的內容?
回答:
const 成員函式只能回傳 指向成員的const指標或參考,
但是,您的示例未回傳指向成員的指標;它回傳的恰好是指標成員的副本,在 const 成員函式中允許這樣做(即使指標碰巧指向另一個成員),
這將不會被允許(請注意,它現在正在回傳參考):
int *&f() const { return x; }
但這可以(回傳 const參考):
int *const &f() const { return x; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/260169.html
標籤:其他
下一篇:求助,結構體寫入出現了錯誤
