哪个合适:
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/