c++ - 在 C++ 中定义一堆静态方法

标签 c++

哪个合适:

class xyz {
  static int xyzOp1() { }
  static int xyzOp2() { }
};

namespace xyz {
  static int xyzOp1() {}
  static int xyzOp2() {}
};

与命名空间标签相比,使用类标签定义时有什么特别之处吗?

还有内存管理方面有什么不同,我们需要担心吗?

最佳答案

它们的意思不同。在 class 上下文中,static 意味着方法不需要对象来操作,因此更像是自由函数。在 namespace 上下文中,这意味着函数具有内部链接,因此对于定义它们的翻译单元是唯一的。

此外, 的成员默认是私有(private)的,因此,如所写,您的类函数只能相互调用。您需要添加一个 public: 访问说明符或使 class 成为 struct 来更改它。

如果您需要一堆自由函数而不需要类对象,那么将它们定义为命名空间中的非static 函数可能更合适。如果它们在头文件中以行方式定义,那么通常需要将它们声明为inline。如果它们在 class 中定义,则这是隐含的。

关于c++ - 在 C++ 中定义一堆静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1332632/

相关文章:

c++ - 使用 cudaMemcpy 时出现段错误

GCC 中的 C++ 模板

c++ - 如何使用 opencv 2.4.9 在 ORB 中获得高效的结果?

c++ - 自修改算法?

c++ - 使用 Win32/MFC 将文件位置传递给外部进程

c++ - 为什么不从 std::allocator 继承

c++ - cvCreateFileCapture()

c++临时对象创建了吗?

c++ - c1xx : fatal error C1083: Cannot open source file - with some Chinese or Javanese

python - P4Python p4.temp_client 坏了?