
복사 생성자의 정의
문제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
반응형
'etc. > 열혈 C++ 프로그래밍' 카테고리의 다른 글
(열혈 C++ 프로그래밍) OOP 단계별 프로젝트 03단계 (0) | 2021.11.17 |
---|---|
(열혈 C++ 프로그래밍) OOP 단계별 프로젝트 02단계 (0) | 2021.11.17 |
(열혈 C++ 프로그래밍) 문제 04-3 (0) | 2021.11.16 |
(열혈 C++ 프로그래밍) 문제 04-2 (0) | 2021.11.16 |
(열혈 C++ 프로그래밍) 문제 04-1 (0) | 2021.11.15 |

복사 생성자의 정의
문제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
반응형
'etc. > 열혈 C++ 프로그래밍' 카테고리의 다른 글
(열혈 C++ 프로그래밍) OOP 단계별 프로젝트 03단계 (0) | 2021.11.17 |
---|---|
(열혈 C++ 프로그래밍) OOP 단계별 프로젝트 02단계 (0) | 2021.11.17 |
(열혈 C++ 프로그래밍) 문제 04-3 (0) | 2021.11.16 |
(열혈 C++ 프로그래밍) 문제 04-2 (0) | 2021.11.16 |
(열혈 C++ 프로그래밍) 문제 04-1 (0) | 2021.11.15 |