c 中建立物件的幾種方法

2021-06-18 18:11:38 字數 1080 閱讀 8818

2011-05-07 11:58

首先,只有建立了類的物件,才能呼叫類中的動態的成員(包括成員變數和成員函式),其建立物件的方法有兩種:一種直接用類名建立物件,如有乙個類為:

class cat

{public:

a();

b();

void main ()

cat cat;

cat.a();

return 0;

另一種方法是用new的方法

class cat

{public:

a();

b();

void main ()

cat *cat=new a();

cat->a();

return 0;

兩種方法的區別,引用別人的貼來加以解釋:

問:建立物件時, 

> > 直接用類名定義的物件   和   用   new   出來的物件有什麼區別啊? 

new出來的需要delete,不用new的就不需要嗎? 

其他的還有什麼區別? 

> > 如果定義了乙個   typedef   carray strarray; 

要向strarray的物件中新增元素,並希望   return   strarray   的物件, 

應該如何定義strarray的物件呢? 

必須要   strarray*   obj   =   new   strarray();   嗎? 

這樣能return   obj   嗎? 

用後也需要delete吧?

答:不用new,則生成的物件儲存在棧區,用new生成的物件在堆區,棧區比較小,堆區比較大,很多臨時變數什麼的和函式呼叫什麼的都要用到棧區,所以為了不占用太多的棧區,大點兒的程式生成物件都在堆區。在棧區不屬於使用者管理的範圍,生成物件在程式結束後自動呼叫系統喜購函式析構掉,沒有記憶體洩漏,而堆區屬於使用者管理範圍,如果你用了new,則堆區就會申請一塊兒放下你的物件的記憶體,如果你不顯式呼叫delete,程式執行完以後那塊兒記憶體還是屬於這個物件,這塊兒記憶體其他的程式就不能再訪問了,如果你程式執行次數比較多或者生成物件比較多,則會占用越來越多的記憶體,最後導致沒有記憶體可以使用,系統崩潰!

建立物件的幾種方法

建立自定義物件的最簡單方法就是建立乙個object的例項,再為他新增屬性和方法。1 var people new object 2 people.name yewenxiang 3 people.age 24 4 people.sayname function 還可以使用物件字面量語法建立乙個物件,...

建立mat物件的幾種方法

方法一 使用mat 建構函式,這種方法簡單明瞭,可以為影象開闢記憶體,指定初始值等 mat m 4,4,cv 8uc3,scalar 0,0,255 建立三個通道的影象,並為其定義尺寸 及通道的初始值 方法二 通過建構函式進行初始化 int sz 3 mat l 3,sz,cv 8uc1,scala...

Javascript建立物件的幾種方法

工廠模式 優點 接受引數,可以無數次的呼叫這個函式,建立person物件,而每次他都可以返回乙個包含三個屬性乙個方法的物件。缺點 雖然解決了建立多個相似物件的問題,但是沒有解決物件識別的問題 即怎麼知道乙個物件的型別 建構函式模式 js中可以建立自定義的建構函式,從而定義自定義物件屬性和方法。per...