1

工作中的一所大学创建了一个只有静态方法的类。因为他想避免实例化,所以他添加了一个(私有)构造函数。到目前为止很好。但是构造函数只是声明的,没有实现。因此,您在使用一次时会得到一个“未定义的引用”。

恕我直言,使构造函数私有化就足够了-没有实现的声明很丑陋。您对此有何看法?

4

2 回答 2

1

我看到了你的担心。

事实上,将复制构造函数设为私有然后不实现它是一种常见的做法,在某些情况下肯定是必要的。这导致了一个著名的 C++ 习语的定义,即不可复制的 Mixin,以赋予它更多的“可见性”。但即使不使用不可复制的 mixin 并且在本地应用解决方案,它也是 IMO 完全可以接受的(因为它是一个已知的习语)。

在您的具体情况下,因为据我了解,我们不是在谈论复制构造函数,而是任何构造函数(该类只是一些静态方法的容器,您不希望它被初始化),我认为使用命名空间并声明您的其中的功能将是一个更好的解决方案。

于 2012-06-20T14:09:16.813 回答
0

实际上实例化这样的对象不会造成任何伤害——程序行为不会改变。如果您仍然想禁止实例化,那么是的,您最好不要实现构造函数。如果你有一个空的构造函数,它可能会从类的朋友和类的成员函数中调用。有关详细信息,请参阅此问题

于 2012-06-20T10:58:48.750 回答