/*Test.h
#ifndef AAH1
#define AAH1
#include<iostream>
#include<cstdlib>
#include<cstring>
using namespace std;
class IntArray {
public:
//コンストラクタ
IntArray(int size);
//デストラクタ
~IntArray();
//コピーコンストラクタ
IntArray(const IntArray& other);
public:
//メンバへのアクセス関数
int Get(int i);
void Set(int i, int value);
int Size();
private:
//インデックスのチェック
void CheckIndex(int i);
private:
int* m_array; //動的配列
int m_size; //配列の要素数
};
#endif */
/*Test.cpp
#include "Test.h"
//コンストラクタ
IntArray::IntArray(int size) {
m_array = new int[size];
m_size = size;
cout << "コンストラクタが呼ばれました。"
<< "要素数は" << m_size << "です。" << endl;
}
//デストラクタ
IntArray::~IntArray() {
delete[] m_array;
cout << "デストラクタが呼ばれました。"
<< "要素数は" << m_size << "です。" << endl;
}
//コピーコンストラクタ
IntArray::IntArray(const IntArray& other) {
m_array = new int[other.m_size];
m_size = other.m_size;
copy(other.m_array, other.m_array + m_size, m_array);
cout << "コピーコンストラクタが呼ばれました" << endl;
}
int IntArray::Get(int i) {
CheckIndex(i);
return m_array[i];
}
void IntArray::Set(int i, int value) {
CheckIndex(i);
m_array[i] = value;
}
void IntArray::CheckIndex(int i) {
if (0 <= i && i < m_size) {
}
else {
cout << "インデックスが不正です!" << endl;
exit(EXIT_FAILURE);
}
}
int IntArray::Size() {
return m_size;
}
*/
/*class.cpp
#include "Test.h"
void Viss(int num) {
cout << "Viss : No." << num << endl;
}
void Show(IntArray array) {
Viss(2);
for (int i = 0; i < array.Size(); i++) {
cout << array.Get(i) << ' ';
}
cout << endl;
Viss(3);
}
int main() {
IntArray array0to9(10);
for (int i = 0; i < array0to9.Size(); i++) {
array0to9.Set(i, i);
}
Viss(1);
Show(array0to9);
Viss(4);
} */
LypUZXN0LmgKIAojaWZuZGVmIEFBSDEKI2RlZmluZSBBQUgxCiAKI2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGNzdGRsaWI+CiNpbmNsdWRlPGNzdHJpbmc+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKY2xhc3MgSW50QXJyYXkgewpwdWJsaWM6CgkvL+OCs+ODs+OCueODiOODqeOCr+OCvwoJSW50QXJyYXkoaW50IHNpemUpOwoJLy/jg4fjgrnjg4jjg6njgq/jgr8KCX5JbnRBcnJheSgpOwogCgkvL+OCs+ODlOODvOOCs+ODs+OCueODiOODqeOCr+OCvwoJSW50QXJyYXkoY29uc3QgSW50QXJyYXkmIG90aGVyKTsKIApwdWJsaWM6CgkvL+ODoeODs+ODkOOBuOOBruOCouOCr+OCu+OCuemWouaVsAoJaW50IEdldChpbnQgaSk7Cgl2b2lkIFNldChpbnQgaSwgaW50IHZhbHVlKTsKIAoJaW50IFNpemUoKTsKIApwcml2YXRlOgoJLy/jgqTjg7Pjg4fjg4Pjgq/jgrnjga7jg4Hjgqfjg4Pjgq8KCXZvaWQgQ2hlY2tJbmRleChpbnQgaSk7CiAKcHJpdmF0ZToKCWludCogbV9hcnJheTsgLy/li5XnmoTphY3liJcKCWludCBtX3NpemU7IC8v6YWN5YiX44Gu6KaB57Sg5pWwCn07CiAKIAojZW5kaWYgKi8KIAovKlRlc3QuY3BwCiNpbmNsdWRlICJUZXN0LmgiCiAKLy/jgrPjg7Pjgrnjg4jjg6njgq/jgr8KSW50QXJyYXk6OkludEFycmF5KGludCBzaXplKSB7CgltX2FycmF5ID0gbmV3IGludFtzaXplXTsKCW1fc2l6ZSA9IHNpemU7CiAKCWNvdXQgPDwgIuOCs+ODs+OCueODiOODqeOCr+OCv+OBjOWRvOOBsOOCjOOBvuOBl+OBn+OAgiIKCQk8PCAi6KaB57Sg5pWw44GvIiA8PCBtX3NpemUgPDwgIuOBp+OBmeOAgiIgPDwgZW5kbDsKfQogCi8v44OH44K544OI44Op44Kv44K/CkludEFycmF5Ojp+SW50QXJyYXkoKSB7CglkZWxldGVbXSBtX2FycmF5OwogCgljb3V0IDw8ICLjg4fjgrnjg4jjg6njgq/jgr/jgYzlkbzjgbDjgozjgb7jgZfjgZ/jgIIiCgkJPDwgIuimgee0oOaVsOOBryIgPDwgbV9zaXplIDw8ICLjgafjgZnjgIIiIDw8IGVuZGw7Cn0KIAovL+OCs+ODlOODvOOCs+ODs+OCueODiOODqeOCr+OCvwpJbnRBcnJheTo6SW50QXJyYXkoY29uc3QgSW50QXJyYXkmIG90aGVyKSB7CgltX2FycmF5ID0gbmV3IGludFtvdGhlci5tX3NpemVdOwoJbV9zaXplID0gb3RoZXIubV9zaXplOwogCgljb3B5KG90aGVyLm1fYXJyYXksIG90aGVyLm1fYXJyYXkgKyBtX3NpemUsIG1fYXJyYXkpOwogCgljb3V0IDw8ICLjgrPjg5Tjg7zjgrPjg7Pjgrnjg4jjg6njgq/jgr/jgYzlkbzjgbDjgozjgb7jgZfjgZ8iIDw8IGVuZGw7Cn0KIAppbnQgSW50QXJyYXk6OkdldChpbnQgaSkgewoJQ2hlY2tJbmRleChpKTsKCXJldHVybiBtX2FycmF5W2ldOwp9CiAKdm9pZCBJbnRBcnJheTo6U2V0KGludCBpLCBpbnQgdmFsdWUpIHsKCUNoZWNrSW5kZXgoaSk7CgltX2FycmF5W2ldID0gdmFsdWU7Cn0KIAp2b2lkIEludEFycmF5OjpDaGVja0luZGV4KGludCBpKSB7CglpZiAoMCA8PSBpICYmIGkgPCBtX3NpemUpIHsKIAoJfQoJZWxzZSB7CgkJY291dCA8PCAi44Kk44Oz44OH44OD44Kv44K544GM5LiN5q2j44Gn44GZISIgPDwgZW5kbDsKCQlleGl0KEVYSVRfRkFJTFVSRSk7Cgl9Cn0KIAppbnQgSW50QXJyYXk6OlNpemUoKSB7CglyZXR1cm4gbV9zaXplOwp9CiovCiAKLypjbGFzcy5jcHAKIAojaW5jbHVkZSAiVGVzdC5oIgogCnZvaWQgVmlzcyhpbnQgbnVtKSB7Cgljb3V0IDw8ICJWaXNzIDogTm8uIiA8PCBudW0gPDwgZW5kbDsKfQogCnZvaWQgU2hvdyhJbnRBcnJheSBhcnJheSkgewoJVmlzcygyKTsKIAoJZm9yIChpbnQgaSA9IDA7IGkgPCBhcnJheS5TaXplKCk7IGkrKykgewoJCWNvdXQgPDwgYXJyYXkuR2V0KGkpIDw8ICcgJzsKCX0KCWNvdXQgPDwgZW5kbDsKIAoJVmlzcygzKTsKfQogCmludCBtYWluKCkgewoJSW50QXJyYXkgYXJyYXkwdG85KDEwKTsKIAoJZm9yIChpbnQgaSA9IDA7IGkgPCBhcnJheTB0bzkuU2l6ZSgpOyBpKyspIHsKCQlhcnJheTB0bzkuU2V0KGksIGkpOwoJfQogCglWaXNzKDEpOwoJU2hvdyhhcnJheTB0bzkpOwoJVmlzcyg0KTsKfSAgKi8=