代码先行:
class A
{
public:
...
int *foo() const
{
return _px;
}
private:
int *_px;
}
成员函数foo
返回一个非常量指针private
member _px
,我认为这为修改成员打开了一扇门_px
, right?
Is foo
a const
会员功能?我应该添加一个const
返回类型前面?
UPDATE
const 成员函数应该保证的是,它不能更改任何数据成员,对吧?
就我而言,函数foo
不打开修改之门class A
s 数据成员_px
,但是一扇修改什么的门_px
指出,所以我的问题是,这是否违反了 const 函数应保证的内容?
A const
成员函数只能返回一个const
指向成员的指针或引用。
但是,您的示例并未返回指向成员的指针;而是返回指向成员的指针。它返回一个恰好是指针的成员的副本。这是允许的const
成员函数(即使指针恰好指向另一个成员)。
这是不允许的(请注意,它现在返回一个引用):
int *& foo() const {return _px;}
但这会(返回一个const
参考):
int * const & foo() const {return _px;}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)