面向對象的三大特征 類的靜態(tài)成員和非靜態(tài)成員有何區(qū)別?
類的靜態(tài)成員和非靜態(tài)成員有何區(qū)別?非靜態(tài)成員也稱為成員變量。它們之間的區(qū)別如下:1。成員變量也稱為實例變量;靜態(tài)變量也稱為類變量。2. 內存存儲的區(qū)別在于成員變量存儲在堆內存的對象中,靜態(tài)變量存儲在方
類的靜態(tài)成員和非靜態(tài)成員有何區(qū)別?
非靜態(tài)成員也稱為成員變量。它們之間的區(qū)別如下:
1。成員變量也稱為實例變量;靜態(tài)變量也稱為類變量。
2. 內存存儲的區(qū)別在于成員變量存儲在堆內存的對象中,靜態(tài)變量存儲在方法區(qū)的靜態(tài)區(qū)域中。
3. 生命周期的不同成員變量隨著對象的出現(xiàn)而出現(xiàn),隨著對象的消失而消失。靜態(tài)變量隨著類的出現(xiàn)而出現(xiàn),隨著類的消失而消失。
c 類的靜態(tài)數(shù)據(jù)成員為什么不能在類內定義?
1. 根據(jù)primer第四版的解釋,靜態(tài)局部對象必須遵循“確保在程序執(zhí)行過程第一次通過對象的definition語句之前初始化”的原則。2同時,我們知道類內的執(zhí)行順序不是按行順序執(zhí)行的,而是按對象調用順序執(zhí)行的。三。以上兩種情況確定了一個問題:如果在類中定義,則靜態(tài)數(shù)據(jù)成員無法初始化,或者在沒有創(chuàng)建對象時初始化時間太晚。[可能的原因之一]4。此外,靜態(tài)成員的生命周期是一旦建立,它們將存在于整個程序的生命周期中。這就是靜態(tài)數(shù)據(jù)成員屬于或不屬于類的原因。如果它們在類中定義,它們將成為類的成員。也就是說,在創(chuàng)建類的多個對象時,會再次聲明和定義變量的位置,并且名稱空間和作用域是相同的,這就導致了名稱重復的問題。因此,靜態(tài)成員需要獨立于類來定義。6實際上,不需要知道編譯器是如何實現(xiàn)這個規(guī)則的。因為這只是一張紙條。