1

我只是想知道我们是否可以在 C++ 中拥有静态类。我的意思是我们可以在 C++ 中将一个类声明为静态的static class foo吗?我知道我们可以在 C++ 中拥有静态成员变量和静态成员函数,但我不确定静态类。

编辑:

我打算问一个类是静态的意味着什么。

4

4 回答 4

9

static存储类说明符。

  • 应用于变量,它指定对象的生命周期可见性——在这种情况下,生命周期是整个程序的执行,可见性仅限于特定的翻译单元(通常是给定的源文件)。
  • 应用于函数,它类似地指定对象的可见性——仅限于定义它的特定翻译单元。
  • 应用于类成员变量和函数,它将变量定义为类的属性,而不是对象本身。

这就是半迂腐的定义。问题是,您希望将什么语义附加到“静态类”的概念上?嵌套类自动具有类似静态的属性——它们是类的属性,而不是单个对象。如果您想要在外部范围内声明的类的类静态属性(即不与跨不同翻译单元的单一定义规则冲突),您可以使用匿名命名空间

于 2013-01-30T06:43:48.783 回答
7

static 关键字意味着它所引用的对象在整个程序的生命周期中都存在。类定义只是构造对象的大纲。

考虑到这一点,也许您可​​能希望创建一个命名空间或创建一个单例对象,这是一个设计为只有一个实例的类。

于 2013-01-30T06:45:34.630 回答
2

不,但是如果您只使用静态方法(和数据)创建一个类,您基本上可以实现几乎相同的效果。请注意,C++ 中没有静态构造函数的概念。

于 2013-01-30T06:40:33.380 回答
2

如果“静态类”指的是 C# 中的类,那么 C++ 中的等价物就是只创建一个构造函数并将其设为私有,并避免创建非静态成员。

如果“静态类”指的是 Java 中的类,那么所有C++ 类都是“静态的”,所以不能添加“静态”,因为它是多余的。

于 2013-01-30T06:43:33.743 回答