gpt4 book ai didi

C++ static const变量和销毁

转载 作者:太空宇宙 更新时间:2023-11-03 10:22:11 25 4
gpt4 key购买 nike

我遇到了一个简单的 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
}

主要.cpp

#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;
}

我预计会出现访问冲突或类似情况,但我从没想过静态常量字符串的内容会发生变化。这里有人能很好地解释该代码中发生了什么吗?

谢谢,诺伯特

最佳答案

编辑: 显然缺少的 A:: 是代码原始帖子中的拼写错误。

原答案:

你的意思是拥有


const std::string <b>A::</b>CONST_STR("some text");

所以 CONST_STR 是 A 类的一部分?

否则您将单独声明它并且不会初始化A 的静态成员。

关于C++ static const变量和销毁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1017755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com