C 建立及訪問動態物件

2022-06-18 07:15:08 字數 1447 閱讀 8370

在此之前我們建立乙個物件的語法是:

class object(arguments

);//

class是類名

//object是物件

//(arguments)是傳入的引數,這一部分可以沒有

現在我們想要動態的建立物件,還是要使用到關鍵字new。語法如下:

//

無參建構函式

classname* pobject = new

classname;

//無參建構函式

也可以寫為:

//classname* pobject = new classname();

//有參建構函式

classname* pobject = new classname(arguments);

與之前的方式還有乙個區別在於,之前的方法返回的是乙個物件,而現在返回的是class型別的指標,這個指標指向所建立物件的位置。因此,如果我們想要使用這個物件,就先要使用解引用運算子(*)先獲取到物件,再使用點操作符(.)來操作物件的屬性和方法。

//

string相比其他的基本資料型別比較特殊,c++中的string本身就是乙個類

//為了方便,我們直接使用string類

#include using

namespace

std;

intmain()

執行結果:

但是這樣一來,似乎顯得有些麻煩,必須要先解引用得到物件本身才可以操作。因此,c++提供了乙個成員選擇操作符("->",乙個短劃線"-"後面跟乙個大於號">"),它的作用就在於簡化指標訪問物件成員。如上面的例子中的:

cout << "

字串的長度為:

"<< (*pstring).length() << endl;

可以寫為:

cout << "

字串的長度為:

"<< pstring->length() << endl;

說到這裡,還沒有說為什麼要動態建立物件。你可能會說,這樣建立不就是使用了new嗎?和原來沒什麼區別啊?

其中的奧妙就在於new這個關鍵字上。我們知道new這個關鍵字會動態的分配一段記憶體空間,而這是之前靜態建立物件無法做到的。也就是說,靜態建立物件的記憶體不是由程式設計師來管理的,而是在編譯的過程中完成的。但是動態的不一樣了,它是在執行時完成的,我們可以動態的管理它的記憶體空間。

如果乙個程式靜態建立了10000個物件,那麼可能記憶體就不夠用了,因為沒有辦法去銷毀他們。但是使用動態的方式,我們就可以即時delete掉,減少記憶體的負擔。

還有一點是,如果使用者想要在執行時建立物件,那麼就只能使用動態建立物件的方式。這和之前我們動態建立乙個陣列的記憶體空間類似。

C 反射 動態建立物件

上面部落格學習了使用反射檢視型別的資訊,以及使用反射獲取特性物件。下面使用反射來動態建立物件。首先準備乙個test類 public class testclass public testclass int a,int b public int show public static int show ...

C 總結 動態建立物件

動態建立物件 2019 5 9 int p new int 不設定初值 對於自定義物件,呼叫預設無參建構函式 int p new int 設定初值為0,對於自定義物件,呼叫含參建構函式 int p new int 2 設定初值為2 釋放記憶體 delete p int prt new int 5 不...

動態物件建立

c 的動態物件建立 當建立乙個c 物件時,會發生兩件事 1 為物件分配記憶體 2 呼叫建構函式來初始化那個記憶體 然而,為物件分配記憶體可以用以下幾種方式或在可選擇的時間發生 1 在靜態儲存區域,儲存空間在程式開始之前就可以分配。這個儲存空間在整個執行期間都存在。2 無論何時到達乙個特殊的執行點 左...