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