2008. 8. 27. 15:58

c++ pointer object arry

/********     객체 포인터       *********/

#include<iostream>

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


class A
{
public:
 A(int _a,int _b)
 {
  a=_a;
  b=_b;
 }
 void show()
 {
  cout<<"a= "<<a<<", b= "<<b<<endl;
 }
private:
 int a,b;
};

int main()
{
 A *p[5];   // A 타입의 객체를 가리키는 포인터배열 5개
 
 for(int i=0;i<5;i++)
 {
  int a,b;
  cout<<"정수 두개입력 : ";
  cin >> a>>b;
  p[i] = new A(a,b*10);
 }

 for(i=0;i<5;i++)
 {
  p[i]->show();
 }
 
 for( i=0;i<5;i++)
 {
  delete p[i];
  // delete []p 는 []<- 이 가리키는 타입이 배열일경우 사용
 }

 return 0;
}


#include<iostream>

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


class Telephone
{
public:
 Telephone(char *pN, char *pH)
 {
  strcpy(name,pN);
  strcpy(pnum,pH);

 }
 void showdata()
 {
  cout<<"이   름: "<<name<<"\t전화번호 : "<<pnum<<endl;
 }

private:
 
 char name[20];
 char pnum[20];
};

int main()
{
 Telephone *T[5];

 cout<<" ** 전화번호 입력 **"<<endl;

 for(int i=0;i<5;i++)
 {
  char name[20];
  char pnum[20];

  cout<<"이름 : ";
  cin>>name;
  cout<<"전화번호:";
  cin>>pnum;
  T[i]= new Telephone(name,pnum);
 }
 
 for(i=0;i<5;i++)
 {
  T[i]->showdata();
 }

 for(i=0;i<5;i++)
 {
  delete T[i];
 }


 return 0;
}