C 解決了為什麼不能初始化類中資料成員的值的問題

發布 科技 2024-02-29
18個回答
  1. 匿名使用者2024-02-06

    以前,原因是類的定義實際上等同於乙個型別的宣告,沒有分配儲存空間,也沒有地方儲存初始化的資料,類例項化後會有實體儲存位址和空間。

    但是,C++11 標準允許在類定義時初始化資料成員,就像我現在使用 Visual Studio 2017 開發 C++ 程式一樣,它可以初始化類體中的非靜態資料成員。

  2. 匿名使用者2024-02-05

    由於類無法分配記憶體空間,因此它們只能宣告它們擁有的變數,並且初始化是在建構函式中完成的。

  3. 匿名使用者2024-02-04

    初始化列表必須用於初始化類中的成員。

    class a

    int a;

    public:

    a ()a(10){}

  4. 匿名使用者2024-02-03

    C++ 11,類內初始化已經是可能的。

  5. 匿名使用者2024-02-02

    我不太明白,你為什麼要在公開後加上冒號。

  6. 匿名使用者2024-02-01

    是的,C++ 中類的資料成員無法初始化,無論是否私有。

    因為類就像資料的模板,是一種自定義組合的新資料型別,而不是變數。 當程式宣告乙個類時,它實際上並不宣告程式的儲存空間,它只適用於該類定義的類物件。 甚至沒有空間,所以你當然不能像定義變數那樣初始化。

  7. 匿名使用者2024-01-31

    靜態私有成員不能,非靜態私有成員可以。

    class a ;

  8. 匿名使用者2024-01-30

    還行。 但是我不明白你說的這個定義是什麼意思,它指的是建立類物件的時間? 建立類物件時,會自動呼叫該類的初始化函式,如果要初始化私有成員變數,只需在初始化函式中寫入其定義即可。

  9. 匿名使用者2024-01-29

    更不用說私有化了,即使是公有制和保護也不能初始化,初始化不應該在建構函式中進行。

  10. 匿名使用者2024-01-28

    在 C++ 中,類的資料成員不能在定義時初始化,除非它是靜態的。 在 C++ 中,在定義類時編寫宣告。 因此,如果要初始化,請轉到建構函式。

  11. 匿名使用者2024-01-27

    這個子編譯器是不同的,可以在定義時在一些較新的編譯器(例如 vs2015)中初始化。

  12. 匿名使用者2024-01-26

    不可以,C++ 類的任何成員變數都不能在定義時初始化。

    只允許那些已宣告為靜態的。

  13. 匿名使用者2024-01-25

    類 1 的私有成員與初始化有什麼關係?

    2 初始化通常是在建立物件時,建構函式對其進行初始化。

  14. 匿名使用者2024-01-24

    我使用 VS2010,不支援直接寫入初始化值,所以我可以使用它。 為了通用起見,讓我們將其寫入建構函式中。

  15. 匿名使用者2024-01-23

    可以使用建構函式初始化類私有成員。

  16. 匿名使用者2024-01-22

    不,或者建構函式還會做什麼。

  17. 匿名使用者2024-01-21

    建構函式可以分兩個階段執行:(1)初始化階段; (2)普通計算階段(即可以是賦值語句等。 )

    無論成員是否在建構函式初始化列表中顯示初始化,類型別的成員始終在初始化階段初始化。

    例如,這樣的類:

    class a ;

    執行建構函式 a (int ii) 時,必須先對其進行初始化,然後才能執行建構函式正文中的賦值。

    如果初始化列表中沒有初始化 CI 和 RI,則無法完成初始化操作。 也就是說,初始化常量或引用資料成員的唯一機會是在建構函式初始化列表中。

    所以上面的建構函式可以寫成 a::a(int ii) :ci(ii), ri(ii)。

    需要補充的一點是:內建型別的成員不是隱式初始化的,所以上面的成員 i 不需要在初始化階段進行初始化,當然也可以初始化,但無論是在初始化列表中初始化還是在函式體中賦值,效率都是一樣的。 即。

    a::a(int ii) :ci(ii), ri(ii) 和 a::

    a(int ii) :i(ii), ci(ii), ri(ii) {效率相同。 都正確。

  18. 匿名使用者2024-01-20

    首先,您知道什麼是初始化,什麼是賦值!

相關回答
10個回答2024-02-29

首先,C 類有 254 個位址,但總有乙個作為閘道器路由,因此最多可以有 253 個主機。 那麼這些主機就是公共 IP 位址。 這可以通過設定 LAN 並使用乙個 IP 來完成。 >>>More

8個回答2024-02-29

修改後正常執行。

問題在於 main 函式也是類的成員函式,成員函式中定義的區域性變數不能被其他成員函式使用。 >>>More

6個回答2024-02-29

了解以下規則:1)過載運算子不會改變運算子的優先順序。 >>>More

17個回答2024-02-29

因為對於曹操來說,只要強行將許術拉入自己的陣營,就已經取得了巨大的成功,而許術是否給自己出謀劃策並不那麼重要,因為他的目的已經達到了。 <> >>>More

5個回答2024-02-29

因為您的臨時檔案儲存在 C: Documents and Settings Administrator Local Settings Temp 中 >>>More