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
반응형