const成員函數能夠將非const指針做爲返回值嗎?

先給出一段代碼函數

class A
{
    int *x;

public:
    int *f() const { return x; }
};

成員函數f返回指向私有成員 x 的很是量指針,我認爲這會修改爲員x ,對吧?指針

fconst成員函數,我應該在返回類型前面添加 const 嗎?code

const成員函數應該保證的是,它不能更改任何數據成員。class

就我而言,函數 f 並無修改類A 的數據成員x ,但能夠修改x 指向的內容,因此個人問題是,這是否違反了const函數應保證的內容?引用

回答:

const 成員函數只能返回 指向成員的const指針或引用。數據

可是,您的示例未返回指向成員的指針;它返回的剛好是指針成員的副本。在 const 成員函數中容許這樣作(即便指針碰巧指向另外一個成員)。co

這將不會被容許(請注意,它如今正在返回引用):return

int *&f() const { return x; }

但這能夠(返回 const引用):const

int *const &f() const { return x; }
相關文章
相關標籤/搜索