这两个声明有什么区别?
class foo
{
public:
static void bar();
};
Run Code Online (Sandbox Code Playgroud)
和
namespace foo
{
void bar();
}
Run Code Online (Sandbox Code Playgroud)
我看到它的方式,没有,因为barin class foo无法访问this,也没有bar命名空间foo.
当然,这纯粹是理论上的.
公共静态类成员函数和名称空间中声明的全局函数之间有什么区别?
foo调用obj.bar(),而使用名称空间则无法实现,因为没有名称空间的实例usingbar()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
Run Code Online (Sandbox Code Playgroud)
如果foo是一个类而不是一个名称空间,这不起作用.
| 归档时间: |
|
| 查看次数: |
947 次 |
| 最近记录: |