變量下面的代碼全局變量修改的const成員函數,其中通過全局函數
#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實例時,你可以在那裏調用非const函數。 const關鍵字只會使'this'->指針成爲常量。 – Hayt
這種設計的背景是什麼? – wasthishelpful