-
是的,但靜態成員函式無法訪問非靜態成員變數,因為它具有指向物件本身的隱式指標(通常稱為 this 或 self)。
-
靜態成員變數和非靜態成員變數肯定是可以的,傳遞的是這個變數的值,而不是變數本身。
-
不可以,因為靜態成員變數,初始化在類之外,狀態只是一直在變化,所以不能作為表單引數使用。
-
這是不可能的,你自己的類中的靜態成員變數是由你自己的類物件共享的變數。
-
是的! 只要您定義了乙個全域性變數,或者在某個其他類中,您需要使用該變數來包含定義靜態成員變數的類的標頭檔案。
-
當乙個靜態成員變數作為引數傳遞給另乙個函式時,它只是乙個值,但函式呼叫不就是乙個值嗎,為什麼不能呢?
-
原因如下;
與靜態資料成員一樣,靜態成員函式是類的一部分,而不是物件的一部分。 如果要在類外部呼叫公共靜態成員函式,請使用類名和域運算子”。
例如,box volume( ) 實際上也允許通過物件名稱呼叫靜態成員函式,例如 );但這並不意味著這個函式屬於物件 a,而只是它型別為 a。 靜態成員函式的目的是能夠處理靜態資料成員。 可以說,靜態成員函式和非靜態成員函式的根本區別在於:
非靜態成員函式有這個指標,靜態成員函式不屬於乙個物件,它與任何物件都沒有關係,靜態成員函式沒有這個指標。
這確定靜態成員函式無法訪問此類中的非靜態成員。 在 C++ 程式中,靜態成員函式主要用於訪問靜態資料成員,而不是非靜態成員。 假設靜態成員函式中有以下語句:
cout<”。比如cout<<
-
讓我們從變數開始:
1:桿件變數:在變數電子部分定義的變數稱為累桿件變數。 也就是說,成員變數在整個類中是有效的,可以直接呼叫類中的方法來使用成員變數。
但是,成員變數進一步分為例項成員變數(稱為例項變數)和類變數(稱為靜態變數)。
例項變數:是我們通常定義的變數,比如int a; a 是例項變數。
靜態變數:在定義之前應新增靜態變數,如static int a; 這個a是乙個靜態變數,當static加入到變數的定義之前,就意味著這個變數在發生變化的時候就發生了變化,那麼每次使用這個變數,這個變數就已經發生了變化,也就是所謂的無處不在的變化,靜態變數的生命週期就是整個源程式, 但該變數只能在定義變數的函式中使用。
退出函式後,即使該變數繼續存在,也無法使用該變數。
2:區域性變數:方法體中定義的變數和方法的引數稱為區域性變數。
這意味著區域性變數僅在定義它的方法內有效,而該方法之外的其他方法不能使用它。 如果區域性變數的名稱與成員變數的名稱相同,則成員變數處於隱藏狀態,即該成員變數在此方法中暫時無效,以區域性變數定義為準。
簡而言之,這是如何做到這一點
二。 長期提到的方法是建構函式、類方法和例項方法。
建構函式是名稱與類名相同,並且沒有型別。
類方法和例項方法之間的區別在於,類方法前面有乙個靜態修飾符,而例項方法不是靜態的。 例項方法可以對類變數和例項變數進行操作,而類方法只能對類變數進行操作。
-
以 @ 開頭的變數是例項變數,屬於特定物件。 class person def initialize(name, gender, age) @name = name @gender = gender @age = age end end 在上面的示例中,@name、@gender、@age都是例項變數。
-
成員變數和例項變數是一回事,不需要顯示初始賦值; 成員方法是在物件中定義的方法; 區域性變數是在方法內容中定義但必須初始化的變數; 靜態變數是用靜態修飾的變數,與例項無關,而是與類相關。
-
靜態變數不需要附加到物件例項,並且在建立例項物件之前無法呼叫例項變數。
-
成員變數可以在乙個類中使用,區域性變數只能用在自己的方法中,不能用在其他方法中!!
-
成員變數和例項變數是一回事。 區域性變數在方法中宣告,或者是方法的引數。 靜態變數用靜態裝飾
-
最好閱讀本書並仔細檢視定義和示例。
-
不同的範圍 成員變數只能在類或當前物件存在時使用,而靜態變數可以從程式的開始到程式的結束使用。
-
成員變數和靜態變數之間的差異。
1.兩個變數的生命週期不同。
成員變數在物件建立時存在,並在物件為 ** 時釋放。
靜態變數在載入類時存在,在類消失時消失。
2.呼叫方式不同。
成員變數只能由物件呼叫。
靜態變數可以由物件呼叫,也可以由類名呼叫。
3.不同的別名。
成員變數也稱為例項變數。
靜態變數也稱為類變數。
4.資料儲存位置不同。
成員變數儲存在堆記憶體中的物件中,因此它們也稱為特定於物件的資料。
靜態變數資料儲存在方法區域(共享資料區域)的靜態區域,因此也稱為物件的共享資料。
成員變數和靜態變數之間的差異。
1.兩個變數的生命週期不同。
成員變數在物件建立時存在,並在物件為 ** 時釋放。
靜態變數在載入類時存在,在類消失時消失。
2.呼叫方式不同。
成員變數只能由物件呼叫。
靜態變數可以由物件呼叫,也可以由類名呼叫。
3.不同的別名。
成員變數也稱為例項變數。
靜態變數也稱為類變數。
4.資料儲存位置不同。
成員變數儲存在堆記憶體中的物件中,因此它們也稱為特定於物件的資料。
靜態變數資料儲存在方法區域(共享資料區域)的靜態區域,因此也稱為物件的共享資料。
-
最直接的是,當你引用乙個靜態成員時,你不需要構建乙個物件,你可以直接用乙個類來訪問它;
-
靜態變數可能有兩種型別。
函式中的靜態變數意味著變數的生存期是全域性的,可以想象它實際上是在函式之外宣告的,當然由於可見範圍的原因,其他函式無法訪問它。
函式外部的靜態變數應該是本地變數,不同之處在於沒有其他檔案可以通過 extern 訪問它。
C語言中似乎沒有物件導向的詞。
-
不。 C++的作用域從未聽說過以後可以更改,變數的作用域是在宣告時確定的,您只能更改其值,而不能更改其作用域。 下面是乙個了解區域性靜態和動態變數的示例:
1.讓我們從區域性靜態變數開始:區域性靜態變數只初始化一次,區域性靜態變數的生存期貫穿呼叫函式(宣告所在的位置)之後的一段時間。 例如,為了更清楚起見,執行結果在右側。
2.了解 main 函式的動態變數:動態變數的生存期僅在 main 函式的大括號內,必須宣告才能使用。
3.您無法訪問 main 函式中其他函式的區域性靜態變數,結果將是錯誤的。
4.不能在同一作用域中宣告多個同名的變數,但如果是巢狀關係,則會導致重寫,如下所示
筆記:
不管是什麼型別的變數,我們都要注意它的範圍和初始化了多少次,否則我們會在這麼小的地方出錯,這會導致整個專案出現問題,故障排除很煩人。
-
定義變數後,無法修改型別,但可以為其他操作定義另乙個變數。 無論如何,乙個變數型別是不能改變的,但可以轉換,但是需要有乙個轉換目標,這需要使用另乙個定義的變數。
-
main 函式的動態變數會將 main 函式中對此變數的所有訪問定向到 main 函式中的動態變數。 所以不會有兩個。
如下**:包括
void fun()
intmain(void)
輸出為:
in main i=9
in fun ()i=8
在主 i=9 的樂趣之後可以證明。