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; }