我在一个简单的 C++ 类中遇到了一个奇怪的行为。
类A.h
class A
{
public:
A();
~A();
static const std::string CONST_STR;
};
类A.cpp
#include "classA.h"
#include <cassert>
const std::string A::CONST_STR("some text");
A::A()
{
assert(!CONST_STR.empty()); //OK
}
A::~A()
{
assert(!CONST_STR.empty()); //fails
}
主文件
#include <memory>
#include <classA.h>
std::auto_ptr<A> g_aStuff;
int main()
{
//do something ...
g_aStuff = std::auto_ptr<A>(new A());
//do something ...
return 0;
}
我预计访问冲突或类似的事情,但我从没想过静态 const 字符串的内容会改变。这里有没有人能很好地解释该代码中发生了什么?
谢谢,诺伯特