这两个声明有什么区别?
class foo
{
public:
static void bar();
};
和
namespace foo
{
void bar();
}
在我看来,没有,因为bar
inclass foo
无权访问this
,bar
in namespace也无权访问foo
。
当然,这纯粹是理论上的。
这两个声明有什么区别?
class foo
{
public:
static void bar();
};
和
namespace foo
{
void bar();
}
在我看来,没有,因为bar
inclass foo
无权访问this
,bar
in namespace也无权访问foo
。
当然,这纯粹是理论上的。
公共静态类成员函数和在命名空间中声明的全局函数有什么区别?
foo
并调用obj.bar()
,而命名空间则无法实现相同的目标,因为没有命名空间的实例using
bar()
foo
所述,您可以在模板参数处使用该类。例如在template<typename T> fun() { T::bar(); }
在命名空间范围内定义的函数可以通过参数相关查找找到:
namespace foo
{
class bar;
void baz (bar);
}
foo::bar x;
baz (x); // Ok, baz is found by ADL
如果 foo 是一个类而不是命名空间,这不起作用。