假设我有一个带有静态const成员变量的类:
// foo.h
class foo {
public:
foo(){}
bool greaterThan(int someNum){return num > someNum}
private:
static const int num;
};
// foo.cpp
const int foo::num = 321;
如果我在Visual Studio 2013中调试这个,对我来说有些奇怪的事情发生了;调试器声明num为1,即使代码正在以正确的值执行;关于可能导致这种情况的任何想法?
答案 0 :(得分:3)
静态const int可能会更改其值。不合法。但无论如何可能。
该值具有内存位置,可能不在只读链接部分。如果它不是,那么写出界限可能会改变它。例如,在数组或字符串之外写入。
要找到它,我会使用调试器中断main()检查其值以查看它是321,然后设置值的监视。当它发生变化时,您发现了正在执行此操作的错误代码。