簡體   English   中英

靜態類的現實生活意義

[英]static class real life significance

我在static關鍵字上讀了很多東西,我只發現了static變量,static函數,但是沒有static類的討論,請您對此進行解釋。

  • 為什么我們在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和一個嵌套類AB (即成員類或子類) AB 主程序的第二行顯示了如何無法實例化AB類型的對象。 您不能這樣做,因為BA的成員類,因此需要實例化類型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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM