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