首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以放在名称空间中的完整的法律实体是什么?

可以放在名称空间中的完整的法律实体是什么?
EN

Stack Overflow用户
提问于 2011-08-04 18:29:58
回答 2查看 151关注 0票数 2

我现在正在学习C++。可以放在名称空间中的完整的法律实体是什么?

这里的合法实体指的是名称空间的有效成员

哦,这是一个真正的问题。我来自.net,我有.net的心态。

EN

回答 2

Stack Overflow用户

发布于 2011-08-04 18:32:40

任何东西都可以放在一个名称空间中(当然,这对于C++是合法的)。

实际上,所有东西都在某个名称空间中-全局名称空间,如果没有指定的话。

票数 1
EN

Stack Overflow用户

发布于 2011-08-04 18:39:41

除了几个“实体”之外,所有的东西都可以放在namespace中,它们不会编译。

(1)全局过载的operator newoperator delete

代码语言:javascript
复制
namespace N
{
  void* operator new (size_t size) // error
  { ... }
}

(2)在namespace的外部作用域中声明的构造的定义;例如,如果你有一个全局声明的class A,那么你就不能在你的namespace N中定义它的方法。同样,如果在namespace N中声明了方法,则不能将其定义放在namespace N::Nested中(即NestedN中的名称空间)。

代码语言:javascript
复制
//file
struct A {
  void foo ();
  static int i;
};

namespace N
{
  int A::i = 0; // error
  void A::foo()  // error
  {}
}

演示:this is not allowed

我至少从我的经验中记住了这两个限制。不知道规格是什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6939815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档