【发布时间】:2017-01-23 13:10:51
【问题描述】:
下面的代码
#include <iostream>
class A
{
public:
int x;
double y;
A(int x_, double y_) : x(x_), y(y_)
{
}
void display(void) const;
};
class B
{
public:
static A staticObject;
};
void A::display(void) const
{
std::cout << x << ' ' << y << std::endl;
B::staticObject.x = 42;
B::staticObject.y = 3.5;
std::cout << x << ' ' << y << std::endl;
}
A B::staticObject(19, 29.3);
int main(void)
{
B::staticObject.display();
return 0;
}
打印出来
19 29.3
42 3.5
这让我想知道:
让 const 成员函数修改通过其他方式调用它的对象总是安全的吗?
此外,如果该成员函数(此处为 display)未声明为 const,是否可以防止出现任何最坏情况?
【问题讨论】:
-
const 成员函数仅适用于对象的当前实例。因此,当您获得同一对象的非常量实例时,您可以在那里调用非常量函数。 const 关键字仅使
this-> 指针成为 const 指针。 -
这个设计的背景是什么?