C++

열혈강의 연습문제 4-2 /생성자/소멸자/객체 포인터 동적 할당/해체/문자입력받아서 순서대로 출력

상레알 2009. 1. 6. 00:32


#include <iostream>

using std::cout;
using std::cin;
using std::endl;

class NameCard{

private:
 char *name;
 char *number;
 char *address;
 char *grade;

public:
 NameCard(){}
 NameCard(char *_name,char *_number,char *_address,char *_grade)
 {
  if(_name==NULL||_number==NULL||_address==NULL||_grade==NULL)
  {
   cout <<"전부다 입력해야됩니다.다시 입력해주세요"<<endl;
  }
  else
  {
   name = new char[strlen(_name)+1];   //입력받은 문자열 복사 private 멤버 변수에
   strcpy(name,_name);
   number = new char[strlen(_number)+1];
   strcpy(number,_number);
   address = new char[strlen(_address)+1];
   strcpy(address,_address);
   grade = new char[strlen(_grade)+1];
   strcpy(grade,_grade);
  }  
 }
 ~NameCard()
 {
  delete []name;    // 동적으로 할당한 멤버변수 메모리해체
  delete []number;
  delete []address;
  delete []grade;
 }
 void showdata()
 {
   cout<<"데이터 출력결과 "<<endl; 
   cout<<name<<number<<address<<grade<< endl;
 }
};
int main()
{
 char _name[5];
 char _number[15];
 char _address[30];
 char _grade[5];

 NameCard *arr[3];
 
 for(int i=0; i<3; i++)   
 {
  cout<<"정보를 입력하세요"<<endl;
  cout<<"이름 :";
  cin>>_name;
  cout<<"전화번호 :";
  cin>>_number;
  cout<<"주소 :";
  cin>>_address;
  cout<<"직급";
  cin>>_grade;
  cout<<endl;
  
  arr[i] = new NameCard(_name,_number,_address,_grade);   //객체 포인터 동적할당
 }
 
 for(int j=0; j<3; j++)
 {
  arr[j]->showdata();
 }

 return 0;
}

캐시 적립부터 유용한 콘텐츠까지, 돈버는 앱 '허니스크린'