我现在正在学习C++。可以放在名称空间中的完整的法律实体是什么?
这里的合法实体指的是名称空间的有效成员
哦,这是一个真正的问题。我来自.net,我有.net的心态。
发布于 2011-08-04 18:32:40
任何东西都可以放在一个名称空间中(当然,这对于C++是合法的)。
实际上,所有东西都在某个名称空间中-全局名称空间,如果没有指定的话。
发布于 2011-08-04 18:39:41
除了几个“实体”之外,所有的东西都可以放在namespace中,它们不会编译。
(1)全局过载的operator new和operator delete
namespace N
{
void* operator new (size_t size) // error
{ ... }
}(2)在namespace的外部作用域中声明的构造的定义;例如,如果你有一个全局声明的class A,那么你就不能在你的namespace N中定义它的方法。同样,如果在namespace N中声明了方法,则不能将其定义放在namespace N::Nested中(即Nested是N中的名称空间)。
//file
struct A {
void foo ();
static int i;
};
namespace N
{
int A::i = 0; // error
void A::foo() // error
{}
}演示:this is not allowed。
我至少从我的经验中记住了这两个限制。不知道规格是什么。
https://stackoverflow.com/questions/6939815
复制相似问题