const成员函数可以将非const指针作为返回值吗?
先给出一段代码
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; }

浙公网安备 33010602011771号