類模板
動態確定內部陣列空間的大小
實現那函式返回陣列長度
拷貝構造和賦值操作
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 在這個例子中,演示了如何建...