8 陣列類的建立 下

2021-10-21 07:36:24 字數 1942 閱讀 2801

類模板

動態確定內部陣列空間的大小

實現那函式返回陣列長度

拷貝構造和賦值操作

template

<

typename t>

class

dynamicarray

:public array

;

實現

#ifndef dynamicarray_h

#define dynamicarray_h

#include

"array.h"

#include

"exception.h"

namespace dragonlib

else

}dynamicarray

(const dynamicarray

& obj)

//拷貝建構函式

}else

} dynamicarray

&operator=(

const dynamicarray

& obj)

t* temp =

this

->m_array;

this

->m_array = array;

this

->m_length = obj.m_length;

delete

temp;

}else

}return

*this;}

intlength()

const

void

resize

(int length)

//動態重置陣列的長度

t* temp =

this

->m_array;

this

->m_array = array;

this

->m_length = length;

delete

temp;

}else}}

~dynamicarray()

};}#endif

// dynamicarray_h

重複**,進行優化,通過三個保護函式優化共有函式,讓公有函式看上去清晰簡單。

t*

copy

(t* array,

int len,

int newlen)

//拷貝乙個新的陣列出來

}return ret;

}void

update

(t* array,

int length)

else

}void

init

(t* array,

int length)

else

運用以上優化的函式,改寫以下函式

dynamicarray

(int length)

dynamicarray

(const dynamicarray

& obj)

//拷貝建構函式

dynamicarray

&operator=(

const dynamicarray

& obj)

return

*this;}

intlength()

const

void

resize

(int length)

//動態重置陣列的長度

}

staticarray通過封裝原生陣列的方式實現陣列類

dynamicarray動態申請堆空間,使得陣列長度動態可變

陣列物件能夠代替原生陣列,並且使用上更安全

**優化是專案開發過程中不可或缺的環節

六 陣列類的建立

順序儲存結構的線性表存在著兩個方面的問題 功能方面 陣列操作符的過載,線性表有可能被誤用為陣列使用 效率方面 在一些場合中,效率上是有隱患的 解決方案 當前的庫中沒有可以代替原生陣列的實現,所以有可能會被誤用,需要建立乙個陣列類代替原生陣列。需求分析 建立陣列類代替原生陣列的使用 array設計要點...

陣列的新玩法,建立陣列類。

陣列的新玩法,建立陣列類。c語言中的陣列不好用嗎?為什麼需要陣列類?仔細思考一下,原生陣列有缺點嗎?額,還真有!在使用陣列的時候,使用者想要獲取陣列的長度是比較麻煩,如果不清楚函式引數傳遞的規則,使用函式來求陣列長度,得到的必然是錯誤的結果。比如 include using namespace st...

C Array類 建立陣列

除了使用c 語法 建立陣列之外,還可以使用靜態方法 createinstance 建立陣列。舉個例子 array intarray1 array.createinstance typeof int 5 for int i 0 i 5 i for int i 0 i 5 i 在這個例子中,演示了如何建...