본문 바로가기
C++

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

by 상레알 2009. 1. 6.


#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;
}

'C++' 카테고리의 다른 글

클래스와 Static  (0) 2009.01.15
클래스와 const  (0) 2009.01.14
복사 생성자가 호출되는 시점  (0) 2009.01.08
복사생성자  (0) 2009.01.08
const 함수  (0) 2009.01.06
friend 선언  (0) 2009.01.06
This 포인터  (0) 2009.01.06
malloc 함수와 new 연산자의 차이  (0) 2009.01.05
소멸자의 특징과 필요성  (0) 2008.12.30
생성자와 객체의 생성 과정  (0) 2008.12.30