如果沒有靜態成員函式會發生什麼情況

發布 汽車 2024-05-17
7個回答
  1. 匿名使用者2024-01-28

    舉個例子,例如,如果你想實現oo,你不能使用全域性函式,你還需要乙個條目處理程式(例如執行緒),你需要在構造乙個物件之前使用? 該怎麼辦???

    使用靜態成員函式,因為它不屬於任何物件,只屬於類,並且可以在物件初始化之前使用。

    它通常用於回撥函式。

    如果你不明白,嗨,我。

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

    並且不屬於任何物件

    這裡詳細講解一下部分內容,其中一小部分和樓上有點一樣,但是我說的重點,和它不一樣,有些說法是修改的。

    首先,我將把 landlord 的 “static members” 和 “static methods” 放在這裡,分別對應下面的 “static data members” 和 “static member functions”。 並使它們都是靜態成員。 (它們實際上是同一概念的不同術語。 )

    靜態成員屬於乙個類,並由該類的所有物件共享“——沒錯。

    不管你構建了多少個類的物件,記憶體中只有乙個靜態成員“——我想說的是,無論你在該類中構建了多少個物件,所有成員函式在記憶體中都只有乙個。

    為什麼靜態成員屬於類?

    因為,讓我們假設類 a };並將物件定義為 abc;

    引用類成員的一般方法是通過物件引用它:;

    但是,您可以通過類 a::i 引用 i,通過 a::d isplay() 引用 display()。這裡有乙個特別的提示!!

    普通成員並非如此,儘管靜態成員和普通成員的記憶體中只有乙個副本。 但從這個角度來看,靜態成員屬於類。

    對於靜態成員函式,我們可能無法分辨出區別,但對於靜態資料成員,我們可以很容易地理解它。

    如果未將其定義為靜態資料成員,則每個物件都具有 i 的副本 (copy)。 但是,當定義為靜態資料成員時,所有物件共享 i 的副本,這意味著 i 是記憶體中的副本。

    那麼,如果你在不同的物件中引用 i,如果你改變 i,其他物件中 i 的值也會改變,所有物件的值都是一樣的。

    引用靜態資料成員時,可以遍歷乙個類而不是乙個物件,並且記憶體中只有乙個靜態資料成員,並且可以由乙個類引用。 很明顯,靜態資料成員屬於類。

    這是一種在不同物件之間共享資料的方法。

    靜態成員函式,類似於靜態資料成員。 毋庸置疑,需要注意的是,它在記憶體中始終只有乙個副本(普通成員函式也是如此)。

    這裡就不多說靜態成員的生命週期了。

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

    答:bb。此指標是指向系統隱含的當前物件的指標。

    由於靜態函式是同一類別中所有物件共享的函式,並且記憶體裂解天平中只存在乙個副本,並且不屬於某個任意物件,因此靜態函式沒有這個指標。

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

    在C++程式設計思路中提到,在引入靜態成員函式之前,如果需要調整類中C++中乙個函式,但與該類的例項無關,則需要((t*)null)->func(),所以簡單引入靜態記憶體函式。

    我們定義了乙個包含私有靜態成員變數 m ninta 的 CstaticMember 類,如果想在外部訪問或更改 m ninta 的值,那麼我們必須根據 C++ 語法的要求提供乙個成員函式來訪問它。

    賦值運算子和賦值表示式。

    C++ 提供了幾個賦值運算子,其中最簡單的是“=”,帶有賦值運算子的表示式稱為賦值表示式。 例如,m=m+6 是乙個賦值表示式。

    賦值表示式的用途是將等號右側的表示式的值賦給等號左側的物件。 賦值表示式的型別是等號左側物件的型別,表示式的結果是賦值後等號組左側物件的值,操作的組合是從右到左。

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

    原因如下;

    與靜態資料成員一樣,靜態成員函式是類的一部分,而不是物件的一部分。 如果要在類外部呼叫公共靜態成員函式,請使用類名和域運算子”。

    例如,box volume( ) 實際上也允許通過物件名稱呼叫靜態成員函式,例如 );但這並不意味著這個函式屬於物件 a,而只是它型別為 a。 靜態成員函式的目的是能夠處理靜態資料成員。 可以說,靜態成員函式和非靜態成員函式的根本區別在於:

    非靜態成員函式有這個指標,靜態成員函式不屬於乙個物件,它與任何物件都沒有關係,靜態成員函式沒有這個指標。

    這確定靜態成員函式無法訪問此類中的非靜態成員。 在 C++ 程式中,靜態成員函式主要用於訪問靜態資料成員,而不是非靜態成員。 假設靜態成員函式中有以下語句:

    cout<”。比如cout<<

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

    靜態成員函式的定義與常規成員函式的定義相同,只是前面有乙個 static 關鍵字,其定義格式如下。

    類名。

    static

    型別。 函式(引數)的名稱。

    函式體說明: 1)類的靜態成員函式只能訪問類的靜態差分總資料成員,而不能訪問類中的普通函式成員。

    因為只有當類的物件存在時,普通資料成員才有意義。

    2)靜態成員函式與類相關聯,而不是與類的物件相關聯,因此類中的公共靜態成員是在類外部呼叫的。

    函式,必須保留“類名:”,而不是通過物件名稱呼叫公共靜態成員函式。 課外。

    部門不能呼叫類中的私有靜態成員函式。

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

    靜態成員函式不與任何物件關聯,因此它不能對非靜態成員進行預設訪問。

    它們之間的根本區別在於,靜態成員函式沒有指向 this 的指標,而非靜態成員函式具有指向當前物件 this 的指標。

    例如:class sc

    void f(sc &s)

    函式 nsfn() 可以被認為是被宣告為 void sc::nsfn(sc* this, int a)。 對 nsfn() 的呼叫像注釋一樣編譯,將 s 的位址作為傳遞的第乙個引數。

    你實際上並不編寫呼叫,它是通過編譯完成的。 )

    在函式內部,sc::nsfn() 對非靜態成員的訪問將自動將此引數作為指向當前物件的指標。 當 sc::

    呼叫 sfn() 時,不會傳遞任何物件的位址。 因此,在訪問非靜態成員時,此指標沒有錯誤。 這就是為什麼靜態成員函式與任何當前物件無關的原因。

相關回答
14個回答2024-05-17

人民幣貶值對經濟、生活和工作都有影響

1、進口減少,進口企業利潤下降:因為在進口貨物時,必須先用人民幣在銀行兌換美元等外幣,然後再從國外購買貨物。 >>>More

10個回答2024-05-17

暈倒了,你最好去睡覺。

18個回答2024-05-17

晚期肺癌的症狀:

肺癌處於晚期,如果癌細胞侵入縱隔,可能會出現以下症狀,但不幸的是,它們的出現使恢復相對較差。 >>>More

16個回答2024-05-17

啟動丟失,設定從硬碟啟動,並且無法重新安裝系統。 >>>More

18個回答2024-05-17

將出現無法識別訊號的情況,導致**功能丟失。 >>>More