一個c程序的執(zhí)行是從? 靜態(tài)成員函數(shù)為什么不能訪問本類中的非靜態(tài)成員?
靜態(tài)成員函數(shù)為什么不能訪問本類中的非靜態(tài)成員?程序最終將在內(nèi)存中執(zhí)行,變量只有在占用內(nèi)存中的某個位置時才能被訪問。類的靜態(tài)成員(變量和方法)屬于類本身,在加載類時會分配內(nèi)存,可以通過類名直接訪問內(nèi)存。
靜態(tài)成員函數(shù)為什么不能訪問本類中的非靜態(tài)成員?
程序最終將在內(nèi)存中執(zhí)行,變量只有在占用內(nèi)存中的某個位置時才能被訪問。類的靜態(tài)成員(變量和方法)屬于類本身,在加載類時會分配內(nèi)存,可以通過類名直接訪問內(nèi)存。非靜態(tài)成員(變量和方法)屬于類對象,因此只有在生成類對象(創(chuàng)建類實例)然后通過類對象(實例)訪問時才會分配內(nèi)存。在靜態(tài)成員中訪問類的非靜態(tài)成員時出錯的原因是,當(dāng)該類的非靜態(tài)成員不存在時,該類的靜態(tài)成員已經(jīng)存在。當(dāng)然,訪問內(nèi)存中不存在的東西時會出錯:類ca{私人:INTA//非靜態(tài)成員在創(chuàng)建類的實例時分配內(nèi)存。一個類的不同實例對應(yīng)不同的內(nèi)存區(qū)域
1。friend函數(shù)是一個非成員函數(shù),可以直接訪問類的私有成員。它是在類外定義的普通函數(shù)。它不屬于任何類,但需要在類的定義中聲明。聲明時,只需在好友名稱前添加關(guān)鍵字friend即可。
2. 友元函數(shù)可以訪問類的靜態(tài)、私有和公共成員。
3. friend的功能是提高程序的效率(即減少類型檢查和安全檢查的時間開銷)。然而,它破壞了類的封裝和隱藏,使得非成員函數(shù)可以訪問類的私有成員。