gpt4 book ai didi

c++ - 写static const uint变量和匿名枚举变量有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:38:36 25 4
gpt4 key购买 nike

正在查看 boost asio ssl_client.cpp example并在顶部找到了这个:

enum { max_length = 1024 };

想知道,这个和有什么区别吗

namespace {
const int max_length = 1024;
}

static const int max_length = 1024;

或者也许它们是绝对相等的,但这只是更短?

最佳答案

如果您将它用作值而不是引用,它们是等价的。

enum { constantname = initializer }; 习语曾经在头文件中非常流行,因此您可以在类声明中毫无问题地使用它:

struct X {
enum { id = 1 };
};

因为使用静态 const 成员,您将需要一个类外初始化程序,而且它不能在头文件中。

更新

这些天很酷的 child 会这样做:

struct X {
static constexpr int id = 1;
};

或者他们和 Scott Meyer¹ 一起去写:

struct X {
static const int id = 1;
};

// later, in a cpp-file near you:
const int X::id;

int main() {
int const* v = &X::id; // can use address!
}

¹ 参见 Declaration-only integral static const and constexpr datamembers, Item #30

关于c++ - 写static const uint变量和匿名枚举变量有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33652582/

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