我们可以在C ++中使用静态类吗?

时间:2013-01-30 06:36:03

标签: c++

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

编辑:

我打算问一个类是静态的意思。

4 个答案:

答案 0 :(得分:8)

编辑:好的,我会不再马虎。

static存储类说明符。

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

这就是半迂腐的定义。问题是,您希望将哪种语义附加到“静态类”的概念上?嵌套类自动具有类似静态的属性 - 它们是类的属性,而不是单个对象。如果您希望在外部作用域中声明的类具有类似静态的属性(即,与不同翻译单元中的单定义规则不冲突),则可以使用anonymous namespace

答案 1 :(得分:4)

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

考虑到这一点,也许您可​​能希望执行诸如创建命名空间或创建singleton object这样的类,这个类只设计为具有单个实例。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

如果用“静态类”指的是C#中的那些,那么C ++中的等价物只是制作一个构造函数并使其成为私有,并避免使用非静态成员。

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