正在看一下boost asio ssl_client.cpp的例子,发现这是正确的:
enum { max_length = 1024 };
Run Code Online (Sandbox Code Playgroud)
不知道,这和之间有什么区别
namespace {
const int max_length = 1024;
}
Run Code Online (Sandbox Code Playgroud)
要么
static const int max_length = 1024;
Run Code Online (Sandbox Code Playgroud)
或者它们绝对平等,但这只是更短?
如果您将其用作值而不是引用,那么它们是等效的。
\n\n该enum { constantname = initializer };习惯用法过去在头文件中非常流行,因此您可以在类声明中使用它而不会出现问题:
struct X {\n enum { id = 1 };\n};\nRun Code Online (Sandbox Code Playgroud)\n\n因为使用静态 const 成员,您将需要一个类外初始化程序,并且它不能位于头文件中。
\n\n现在酷孩子都这样做:
\n\nstruct X {\n static constexpr int id = 1;\n};\nRun Code Online (Sandbox Code Playgroud)\n\n或者他们与 Scott Meyer\xc2\xb9 一起写:
\n\nstruct X {\n static const int id = 1;\n};\n\n// later, in a cpp-file near you:\nconst int X::id;\n\nint main() {\n int const* v = &X::id; // can use address!\n}\nRun Code Online (Sandbox Code Playgroud)\n\n\xc2\xb9 请参阅仅声明整型静态 const 和 constexpr 数据\n成员,项目 #30
\n