我有两个班级,Foo 和 Bar。Bar 维护对 Foo 的引用,并具有调用 Foo 中的方法来更改其状态的方法。代码如下所示。
class Foo
{
private:
double m_value;
public:
void setValue(double value) {
this->m_value = value;
};
double getValue() {
return this->m_value;
};
};
class Bar
{
private:
Foo& m_foo;
public:
Bar() : m_foo(Foo()) {
};
void setFooValue(double value) {
m_foo.setValue(value);
};
double getFooValue() {
return m_foo.getValue();
};
};
当我在设置后尝试访问 foo 的值时出现问题,如下所示:
Bar bar;
bar.setFooValue(10000.0);
double value = bar.getFooValue();
std::cout << "Foo value is: " << value << std::endl;
哪个输出Foo value is -9.25596e+061
。看来内存已损坏 - 为什么?我知道不将 m_foo 存储为参考(即使用Foo m_foo;
)将解决问题,但是我也不明白为什么会这样。
更令人费解的是,上面的代码在发布模式下运行时可以正常工作。
我正在使用 Visual Studio 2010 进行编译。
提前谢谢了!