主题:希望高手能够解释一下,在不改变对象的值的情况下,怎么才能改变对象的状态
里布欧赔
[专家分:0] 发布于 2012-03-16 17:04:00
希望高手能够解释一下,在不改变对象的值的情况下,怎么才能改变对象的状态
回复列表 (共4个回复)
沙发
bruceteen [专家分:42660] 发布于 2012-03-17 11:52:00
你的这个“值”和“状态”是怎么定义的?
在C++中对象的值,包含“位值”和“逻辑值”两个含义
有些值可以改变,但这个改变并不改变这个对象的逻辑含义,这些值称为非逻辑值,用mutable前缀来修饰
板凳
里布欧赔 [专家分:0] 发布于 2012-03-17 19:26:00
我是菜鸟,不知道这么多,其实我是希望能够解释一下下面这段话
。。。。。。。
常函数的申明原则
按照语言要求,凡是会改变非静态的成员函数,都不能声明为常成员函数。但是这并不意味着,凡是不会改变非静态成员对象的成员函数,都不会改变对象得状态。
3 楼
eastcowboy [专家分:25370] 发布于 2012-03-18 17:14:00
如果类的成员是一个指针,则在不修改这个指针的情况下,可以修改指针指向的值。
class Test
{
public:
void f() const
{
*p = 10; // 不修改p,但是修改了p指向的值
}
private:
int* p;
};
bruceteen提到的是另一种情形:虽然成员函数用const修饰了,但它仍然可以修改(被mutable修饰的)类的非静态成员。
4 楼
里布欧赔 [专家分:0] 发布于 2012-04-04 23:07:00
bructeen是什么
我来回复