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

時間 2021-08-11 17:12:07

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 裡定義變數後記憶體分配問題!

樓主,首先要明確一件事。靜態記憶體是被放在棧中的。你說的堆疊實際上就是棧區 c 中,記憶體的分配方式分兩種,一種是靜態的,一種是動態的。這裡面你所分配的都是靜態記憶體,而靜態記憶體是儲存在棧區中的。棧區有乙個特點,其生長方向是向著位址減少的方向的。也就是說,你每次靜態的分配乙個變數,其位址會比之前的...

c語言關於為指標的指標分配記憶體的問題

首先 int 是一個二級指標,它是指標的指標,如果你要申請一個二維陣列,有下面兩個方法 int val int malloc sizeof int 10 int i for i 0 i 10 val i int malloc sizeof int 10 然後你可以這樣引用 val m n value...

C語言動態分配位址,C語言中的動態記憶體分配的用法舉例

沒有太多的道理。這是c語言 實參 呼叫方法 帶來的 困惑。通過函式引數只能把值傳回來,不能把位址帶回來。除非用 getmemory char p 可以通過函式引數把位址帶回來。但語法上,不如通過函式返回指標好理解。char getmemory char p 通過函式返回指標,能把位址送回來。記住這種...