我只是想知道我们是否可以在 C++ 中拥有静态类。我的意思是我们可以在 C++ 中将一个类声明为静态的static class foo
吗?我知道我们可以在 C++ 中拥有静态成员变量和静态成员函数,但我不确定静态类。
编辑:
我打算问一个类是静态的意味着什么。
我只是想知道我们是否可以在 C++ 中拥有静态类。我的意思是我们可以在 C++ 中将一个类声明为静态的static class foo
吗?我知道我们可以在 C++ 中拥有静态成员变量和静态成员函数,但我不确定静态类。
编辑:
我打算问一个类是静态的意味着什么。
static
是存储类说明符。
这就是半迂腐的定义。问题是,您希望将什么语义附加到“静态类”的概念上?嵌套类自动具有类似静态的属性——它们是类的属性,而不是单个对象。如果您想要在外部范围内声明的类的类静态属性(即不与跨不同翻译单元的单一定义规则冲突),您可以使用匿名命名空间。
static 关键字意味着它所引用的对象在整个程序的生命周期中都存在。类定义只是构造对象的大纲。
考虑到这一点,也许您可能希望创建一个命名空间或创建一个单例对象,这是一个设计为只有一个实例的类。
不,但是如果您只使用静态方法(和数据)创建一个类,您基本上可以实现几乎相同的效果。请注意,C++ 中没有静态构造函数的概念。
如果“静态类”指的是 C# 中的类,那么 C++ 中的等价物就是只创建一个构造函数并将其设为私有,并避免创建非静态成员。
如果“静态类”指的是 Java 中的类,那么所有C++ 类都是“静态的”,所以不能添加“静态”,因为它是多余的。