我读了很多关于静态关键字的内容,我只找到了静态变量,静态函数,但没有讨论静态类,请你解释一下。
- 为什么我们在 C++ 中使用静态类?
- 为什么我们要引入这种类型的类?
- 给出静态类的物理意义?
- 给出静态类的真实例子?
- 如果有任何限制,那么告诉我什么?
我在等你的回复。提前致谢。
C++ 中没有静态类。static
指存储类,即它适用于对象或函数,而不适用于数据类型。
在 Java 中static class
,当应用于嵌套在其他类中的类时,意味着嵌套类可以独立于封闭类的任何实例进行实例化。在 C++ 中,情况总是如此。C++ 中的嵌套类始终是独立的数据类型。
这就是我的意思:首先让我们看一下这段Java代码:
public class A {
public class B {
}
public static void main(String[] args)
{
A.B b1 = new A.B(); // <-- This is ill-formed, because A.B is not
// an independent data type
A a = new A();
A.B b2 = a.new B(); // <-- This is correct. Use an instance of A to
// create an object of type A.B.
}
}
它定义了一个类A
和一个嵌套类(即成员类或子类)A.B
。主程序的第二行显示了如何不能实例化类型为 的对象A.B
。您不能这样做,因为B
它是 的成员类,A
因此需要实例化现有类型的对象A
。主程序的第三行显示了这是如何完成的。
为了能够直接实例化一个类型的对象A.B
(独立于任何类型的实例A
),您必须创建B
一个静态成员类A
:
public class A {
public static class B { // <---- I inserted 'static'
}
public static void main(String[] args)
{
A.B b1 = new A.B(); // <-- This is now well-formed
A a = new A();
A.B b2 = a.new B(); // <-- This is now ill-formed.
}
}
另一方面,在 C++ 中这不是必需的,因为在 C++ 中,成员类始终是独立的数据类型(在某种意义上,不需要封闭类的实例来创建嵌套类的实例):
class A
{
public:
class B
{
};
};
int main()
{
A::B b; // <--- Perfectly well-formed instantiation of A::B
return 0;
}