[英]static class real life significance
我在static關鍵字上讀了很多東西,我只發現了static變量,static函數,但是沒有static類的討論,請您對此進行解釋。
我正在等待您的回復。 提前致謝。
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
和一個嵌套類AB
(即成員類或子類) AB
。 主程序的第二行顯示了如何無法實例化AB
類型的對象。 您不能這樣做,因為B
是A
的成員類,因此需要實例化類型A
的現有對象 。 主程序的第三行顯示了如何完成此操作。
為了能夠實例化類型的對象AB
直接 (獨立類型的任何實例的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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.