先给出一段代码函数
class A { int *x; public: int *f() const { return x; } };
成员函数f
返回指向私有成员 x
的很是量指针,我认为这会修改为员x
,对吧?指针
f
是 const
成员函数,我应该在返回类型前面添加 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; }