10. 이제 main() 함수에서 dynamic_array를 사용하는 코드를 작성합니다.
int main()
{
int nStudents;
std::cout << "1반 학생 수를 입력하세요: ";
std::cin >> nStudents;
dynamic_array<student> class1(nStudents);
for (int i = 0; i < nStudents; i++)
{
std::string name;
int standard;
std::cout << i + 1 << "번째 학생 이름과 나이를 입력하세요: ";
std::cin >> name >> standard;
class1[i] = student{name, standard};
}
// 배열 크기보다 큰 인덱스의 학생에 접근
try
{
// 아래 주석을 해제하면 프로그램이 비정상 종료합니다.
// class1[nStudents] = student {"John", 8}; // 예상할 수 없는 동작
class1.at(nStudents) = student{"John", 8}; // 예외 발생
}
catch (...)
{
std::cout << "예외 발생!" << std::endl;
}
// 깊은 복사
auto class2 = class1;
std::cout << "1반을 복사하여 2반 생성: " << class2.to_string() << std::endl;
// 두 학급을 합쳐서 새로운 큰 학급을 생성
auto class3 = class1 + class2;
std::cout << "1반과 2반을 합쳐 3반 생성: " << class3.to_string() << std::endl;
return 0;
}