#include<iostream>
#include<string>
using namespace std;
class Student
{
public :
Student();
~Student();
void inputData(); // Input all data from user
void resetClasses(); // reset class list
Student& operator =(const Student& rightSide) ; // Assignment operator
friend ostream& operator << (ostream &outStream, const Student &s) ;
private :
string name ;
int numClasses ;
string *classList ;
};
void prob4(); // 4번 문제
int main(void)
{
int iSelect;
while(1)
{
cout << "문제 번호 입력(3~5), 0입력시 종료 : ";
cin >> iSelect;
switch(iSelect)
{
case 0:
return 0;
case 4:
cout << "4번" << endl << endl;
prob4();
break;
}
}
}
void prob4()
{
Student s1, s2;
s1.inputData() ; // Input data for student 1
cout << "첫번째 학생의 정보:" << s1 << endl;
cout << endl;
s2 = s1;
cout << "첫번째 학생 정보를 할당받은 두번째 학생의 정보: " << s2 << endl ;
s1.resetClasses();
cout << "리셋 후 첫번째 학생의 정보:" << s1 << endl;
cout << "리셋 후 두번째 학생의 정보는 그대로 유지:" << s2 << endl ;
cout << endl;
}
Student::Student()
{
name = "";
numClasses = 0;
classList = NULL;
}
Student::~Student()
{
if(classList != NULL)
delete [] classList;
}
void Student::inputData() // Input all data from user
{
cout << "학생의 이름을 입력하세요 : ";
cin >> name;
cout << "수강 교과목 수를 입력하세요 : "; // 과목 수를 입력 받음
cin >> numClasses;
if(classList != NULL) // 동적 할당 받은 부분이 있을 경우 메모리 해제
delete [] classList;
classList = new string[numClasses]; // 과목 수에 따라 배열을 동적 할당
if(classList == NULL) // 동적 할당을 받았는지 체크
{
cout << "Memory Allocated ERROR!" << endl;
exit(1);
}
for(int i = 0; i < numClasses; i++)
{
cout << " " << i + 1 << "번째 교과목의 이름을 입력하세요 : ";
cin >> classList[i];
}
}
void Student::resetClasses() // reset class list
{
numClasses = 0;
if(classList != NULL)
delete [] classList;
}
Student& Student::operator =(const Student& rightSide) // Assignment operator
{
name = rightSide.name;
numClasses = rightSide.numClasses;
if(classList != NULL)
delete [] classList;
classList = new string [numClasses];
for(int i = 0; i < numClasses; i++)
{
classList[i] = rightSide.classList[i];
}
return (*this);
}
ostream& operator << (ostream &outStream, const Student &s)
{
outStream << "첫번째 학생의 정보 : " << endl;
outStream << "이름 : " << s.name << endl;
outStream << "수강교과목수 : " << s.numClasses << endl;
if(s.numClasses != 0)
{
for(int i = 0; i < s.numClasses; i++)
{
outStream << " " << i + 1 << "번째 교과목명 : " << s.classList[i] << endl;
}
}
outStream << endl;
return outStream;
}
아무리 보아도 어디서 죽는 건지 모르겠어요
나름 생각하며 짰는데
학생이름 입력 받다가도 죽고
과목이름 입력 받다가도 죽고;;;
죽는 곳은 아무데서나 막 죽네요;;
돌아가는 경우도 있고;;
대체 어디가 문제인 걸까요;;
대체 어디서 잘못된걸까요;;
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.