c 繼承後的記憶體分配問題,c 中給結構體分配動態記憶體的問題 用new嗎 怎麼用

2021-08-04 21:37:42 字數 995 閱讀 2204

1樓:柳生十連兵

不能訪問是不能直接通過派生類物件直接呼叫,但是可以通過派生類的成員函式呼叫基類的公有函式來訪問基類的私有屬性.難道編譯器會分配一塊記憶體放著不管造成記憶體洩漏?

2樓:墨夷欣笑

因為在派生類中通過可以定義新函式成員來訪問這些記憶體(間接訪問:比如呼叫基類派生下來的成員函式),所以這些記憶體是可以被主動訪問或銷燬的。

私有基類的成員在私有派生類中的訪問屬性見下表:

私有基類中的成員\t 在私有派生類中的訪問屬性\n私有成員\t 不可訪問\n公用成員\t 私有\n保護成員\t 私有\n

3樓:小卒小丁丁

你要明白私有成員繼承過來是有原因的,雖然你呼叫私有成員時你不能夠訪問,注意是你呼叫時不可以訪問,但是當你例項化一個子類去呼叫父類的方法是,該方法內如果用到了私有成員變數,你不分配會出現訪問記憶體錯誤

假如你想訪問父類的私有成員,這有一個大家都共用的辦法,就是在父類寫一個共有int get(),其中x為私有變數,你會發現就可以取出來該私有成員變數的值

4樓:匿名使用者

不能訪問只是許可權問題。所有的「繼承」都包含了父類中的所有」概念「,就像摩托車的輪子不能誰便拿個車的輪子來替換一樣,汽車就不行吧,但是摩托車是有輪子的,而且這輪子就屬於車輪子的一種。

c++中給結構體分配動態記憶體的問題……用new嗎 怎麼用

5樓:匿名使用者

c++中是沒有結構體的,從c繼承來的struct已經變成類了,而不再只是一

個結構專體,直接new就可屬以了。

#include

struct myclass

;myclass::myclass(int arg)myclass::myclass()

void myclass::show()

C 中new分配記憶體的問題,C 動態分配記憶體 記憶體洩漏問題 new

這樣是會有記憶體洩漏的,因為第一次執行s new stu 後,系統申請了一塊新的記憶體空間 型別為stu 並把其地址賦給s 第2此執行s new stu後,系統又申請了一塊新的記憶體空間,並把其地址賦給s,此時把s原來的值覆蓋掉了,也就是第一次申請的記憶體空間的地址丟失了 而delete s 只是把...

C語言,記憶體管理問題,C語言問題 記憶體的分配方式有哪幾種?

一樣大。name是char指標型別,它只記錄地址,不記錄地址裡面存的東西所以不管存多少東西,地址的長度是不會變的。這個sizeof struct mm的長度目測是8 在32位程式裡 變數定義之後,就會給變數分配空間了,不管你有沒有給它賦值。32位系統下,sizeof struct mm 為8位元組,...

C 程式設計中記憶體分配形式是什麼

linux中,c 記憶體分配方式有三種 1 從靜態儲存區域分配。記憶體在程式編譯的時候就已經分配好,這塊記憶體在程式的整個執行期間都存在。例如全域性變數,static變數。2 在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內建於處理器...