哪个合适:
class xyz {
static int xyzOp1() { }
static int xyzOp2() { }
};
Run Code Online (Sandbox Code Playgroud)
要么
namespace xyz {
static int xyzOp1() {}
static int xyzOp2() {}
};
Run Code Online (Sandbox Code Playgroud)
在我们使用类标记与命名空间标记进行比较时,我们可以获得具体的内容吗?
内存管理还有什么不同,我们需要担心吗?
他们的意思不同.在class上下文中,static意味着方法不需要对象进行操作,因此更像是自由函数.在namespace上下文中,这意味着函数具有内部链接,因此对于定义它们的转换单元是唯一的.
另外,a的成员class默认是私有的,因此,如上所述,您的类函数只能相互调用.您需要添加public:访问说明符或使classa struct更改它.
如果您需要一堆免费函数并且不需要类对象,则可能更适合将它们定义为static命名空间中的非函数.如果它们在头文件中被定义,则通常需要声明它们inline.如果它们在a中定义,则暗示这意味着class.
如果没有看到这些函数的主体,我会说命名空间更合适.使用命名空间,您可以拥有using语句,这样您在调用函数名时就不必完全限定函数名.
使用类的唯一情况是静态方法与类的对象有任何关系,例如当他们需要访问实例的私有成员时.根据您的描述,您似乎不会创建任何xyz实例,因此您不应在此处使用类.
从内存管理的角度来看,这些方法之间没有区别.