gpt4 book ai didi

c++ - 公共(public)静态类成员函数和命名空间中声明的全局函数有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:11:11 26 4
gpt4 key购买 nike

这两个声明有什么区别?

class foo
{
public:
static void bar();
};

namespace foo
{
void bar();
}

在我看来,没有,因为 class foo 中的 bar 没有访问 this 的权限,而且也没有命名空间 foo 中的 bar

当然,这纯粹是理论上的。

最佳答案

What's the difference between a public static class member function and a global function declared in a namespace?

  • 类成员函数将能够访问类的私有(private)静态成员,而命名空间内的函数将不会直接具有任何类型的数据保护
  • 正如 @ValarDohaeris 指出的那样,您可以创建类 foo 的对象并调用obj.bar()即使在对象上下文中,也无法使用 namespace 实现相同的目的,因为没有 namespace 的实例
  • 命名空间可以通过using导入制作 bar()一个有效的电话
  • @John5342 所述你可以使用类 foo在模板参数。例如在 template<typename T> fun() { T::bar(); }

关于c++ - 公共(public)静态类成员函数和命名空间中声明的全局函数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16252440/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com