etc./열혈 C++ 프로그래밍
(열혈 C++ 프로그래밍) 문제 05-1
innit
2021. 11. 17. 21:35
복사 생성자의 정의
문제1
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
namespace COMP_POS {
enum
{
CLERK, SENIOR, ASSIST, MANAGER
};
void ShowPositionInfo(int pos)
{
switch (pos)
{
case CLERK: cout << "사원" << endl; break;
case SENIOR: cout << "주임" << endl; break;
case ASSIST: cout << "대리" << endl; break;
case MANAGER: cout << "과장" << endl; break;
}
}
}
class NameCard {
private:
char* name;
char* comp;
char* pnum;
int rank;
public:
NameCard(char* myname, char* mycomp, char* mypnum, int pos) : rank(pos)
{
int len = strlen(myname) + 1;
name = new char[len];
strcpy(name, myname);
len = strlen(mycomp) + 1;
comp = new char[len];
strcpy(comp, mycomp);
len = strlen(mypnum) + 1;
pnum = new char[len];
strcpy(pnum, mypnum);
}
NameCard(const NameCard& ref) : rank(ref.rank)
{
name = new char[strlen(ref.name) + 1];
comp = new char[strlen(ref.comp) + 1];
pnum = new char[strlen(ref.pnum) + 1];
strcpy(name, ref.name);
strcpy(comp, ref.comp);
strcpy(pnum, ref.pnum);
}
void ShowNameCardInfo() const
{
cout << "이름: " << name << endl;
cout << "회사: " << comp << endl;
cout << "전화번호: " << pnum << endl;
cout << "직급: "; COMP_POS::ShowPositionInfo(rank);
cout << endl;
}
~NameCard()
{
delete[]name;
delete[]comp;
delete[]pnum;
}
};
int main()
{
char cle1[] = "Lee";
char sen1[] = "Hong";
char ass1[] = "Kim";
char cle2[] = "ABCEng";
char sen2[] = "OrangeEng";
char ass2[] = "SoGoodComp";
char cle3[] = "010-1111-2222";
char sen3[] = "010-3333-4444";
char ass3[] = "010-5555-6666";
NameCard manClerk(cle1, cle2, cle3, COMP_POS::CLERK);
NameCard manSENIOR(sen1, sen2, sen3, COMP_POS::SENIOR);
NameCard copy1 = manClerk;
NameCard copy2 = manSENIOR;
copy1.ShowNameCardInfo();
copy2.ShowNameCardInfo();
return 0;
}
728x90
반응형