C 動態申請二維陣列與拷貝建構函式 等號過載

2022-02-01 05:46:34 字數 1260 閱讀 8070

一、c++動態申請二維陣列

在c++中不能直接動態申請二維陣列,經過一番搜尋,發現一種動態申請二維陣列較好的方法。

**如下(matrix_type為某一種型別,lines、columns分別為二維陣列的行數、列數):

matrix_type**elem;

//分配記憶體

void

matrix::memalloc()

//釋放記憶體

void

matrix::memfree()

這樣可以直接讀取和賦值:

elem[i][j] = 0;

這種方法申請二維陣列的優點是記憶體連續,使用直接。

二、c++拷貝建構函式、等號過載

當使用乙個物件通過另乙個物件進行初始化、賦值或函式呼叫返回值時,c++會將原物件進行拷貝,再賦值給下乙個物件。但是這會出現乙個問題,就是當物件中包含動態成員時,c++無法將動態成員資料進行拷貝,即c++進行的拷貝僅僅是「淺拷貝」。

當物件進行初始化時,c++會呼叫拷貝建構函式,當已初始化的物件進行賦值時,c++會呼叫等號過載。

所以解決這一問題的乙個辦法是,重寫拷貝建構函式並進行等號過載。形式如下:

class

matrix;//

初始化matrix::matrix()

matrix::matrix(

int lines, int

columns)

matrix::~matrix()

//分配記憶體

void

matrix::memalloc()

void

matrix::memfree()

//拷貝建構函式

matrix::matrix(const matrix&m)

//符號過載

matrix& matrix::operator =(const matrix&m)

matrix_type* matrix::operator (int

i)const matrix_type* matrix::operator (int i) const

matrix m1 = matrix(2, 2

);matrix m2 = m1;       //

會呼叫拷貝建構函式

matrix m3 = matrix(2, 2

);m3 = m1;       //

會呼叫等號過載

C 動態申請二維陣列

剛學習,做下總結。以下是我的理解,如有錯誤歡迎指出。申請 int a 乙個指向指標的指標。int n m cin n m a new int n 申請乙個n個元素的一維陣列 作為行 for int i 0 i 關係如下假設 n 3 m 4 先申請乙個一維陣列,陣列的每個元素都是乙個指標變數 該陣列的...

C 中動態申請二維陣列

這裡主要介紹c 中動態申請二維陣列的兩種方式,直接給出 很容易明白,簡單的作為乙個筆記。include include 輸入輸出操縱 include using namespace std 法一 new 方式申請 void dynamicarray for i 0 i rows i cout end...

C 二維陣列動態申請記憶體

好久沒用c 刷題了,今天早上刷了幾條題,感覺很陌生了。怪我,大二下實在太頹廢了,沒啥作為。今天更新個關於c 二維陣列記憶體申請的問題,當初作為菜鳥初學指標的時候,還是在這方面有點搞不通的。今天用到了,順便寫下來,適當時候給c 初學者用用。c 二維陣列動態申請記憶體 如果對new和delete不是很了...