【发布时间】:2012-01-09 13:05:53
【问题描述】:
代码先行:
class A
{
public:
...
int *foo() const
{
return _px;
}
private:
int *_px;
}
成员函数foo返回一个指向private成员_px的非常量指针,我认为这为修改成员_px打开了大门,对吧?
foo 是 const 成员函数吗?我应该在返回类型前添加const 吗?
更新
const-member-function 应该保证的是,它不能改变任何数据成员,对吧?
在我的情况下,函数foo 不会打开修改class As 数据成员_px 的大门,而是打开修改_px 指向的大门,所以我的问题是,这是否违反const 函数应该保证什么?
【问题讨论】:
-
启用警告时编译器会说什么?
-
@ArunMu gcc 4.6.1 什么也没说。
-
@ArunMu,好吧,看起来没什么。
-
const遗憾的是不能跨引用/指针传递。 -
它是否违反任何东西取决于类的目的、指针和函数。从技术上讲是可以的。