C 标准曾经不赞成在命名空间范围内使用 static 关键字进行对象声明,将未命名命名空间视为更好的选择。
未命名命名空间比 static 关键字有几个优点:
例如,在命名空间内声明静态函数和变量是有效的:
static int sample_function() { ... } static int sample_variable;
然而,声明静态类或结构是无效的:
// Error: Static types not allowed in namespace scope static class sample_class { ... }; static struct sample_struct { ... };
未命名命名空间通过提供一种方式解决了这个问题在命名空间范围内声明类型:
// Legal code using unnamed namespace namespace { class sample_class { ... }; struct sample_struct { ... }; }
虽然 static 关键字已在 C 11 中符合标准,但未命名命名空间在提供更全面的变量和类型范围,以及增强代码封装。
以上是未命名命名空间与静态关键字:哪个在 C 中提供卓越的范围和封装?的详细内容。更多信息请关注PHP中文网其他相关文章!