-
Notifications
You must be signed in to change notification settings - Fork 0
/
myODS.hpp
52 lines (43 loc) · 1.42 KB
/
myODS.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#ifndef DEFINED_MYODS
#define DEFINED_MYODS
#include <assert.h>
namespace myODS
{
template <typename T>
class array
{
private:
T *a;
public:
int length;
// int型の引数lenをint型のメンバ変数lengthに代入する.
// T型の組み込み配列型(*len)に対応するサイズで動的にメモリを確保し,T型のポインタ型メンバ変数aに代入する.
// 以上をデフォルトコンストラクタとして定義する.
array(int len)
{
length = len;
a = new T[length];
}
// int型の引数iが0以上length未満でないとエラーを出す.
// int型引数iに対し,メンバ変数a[i]を返す.
// 以上をT型の添字演算子(?)[]として定義する.
T &operator[](int i)
{
assert(i >= 0 && i < length);
return a[i];
}
// T型のメンバ変数aに既に値が格納されていれば削除する.
// T型配列の参照型変数bのメンバ変数aを自身のメンバ変数aに代入する.
// 代入元のT型配列の参照型変数bを削除する.
// 上記をint型メンバ変数lengthについても行う.
// 当該クラスオブジェクトの実体を返す.
array<T>& operator=(array<T> &b) {
if (a != NULL) delete[] a;
a = b.a;
b.a = NULL;
length = b.length;
return *this;
}
};
} // namespace myODS
#endif