我偶尔会有一些具有私有静态数据成员的类。我目前正在讨论是否应该在实现文件的未命名命名空间中将这些变量替换为静态变量。除了不能在内联方法中使用这些变量之外,还有其他缺点吗?我看到的好处是,它对类的用户完全隐藏了它们。
发布于 2009-05-13 13:17:18
我不相信这样的好处值得对可读性的影响。我通常认为一些隐私的东西是“足够隐蔽的”。
发布于 2009-05-13 13:19:52
它不仅对类的用户隐藏它们,还对您隐藏它们!如果这些变量是类的一部分,它们应该以某种方式与类关联。
根据您将如何处理它们,您可以考虑将它们设置为静态成员函数中的静态变量:
// header file
class A {
public:
static void func();
};
// cpp file
void A :: func() {
static int avar = 0;
// do something with avar
}
发布于 2009-05-13 13:28:55
我猜归根结底,这些变量在类的上下文中是否有一些实际意义(例如,指向所有对象使用的一些公共内存的指针),或者只是需要在方法之间传递的一些临时数据,而不是用来扰乱类的。在后一种情况下,我肯定会使用未命名的名称空间。在前者中,我会说这是个人品味的问题。
https://stackoverflow.com/questions/857814
复制相似问题