앞서 만든 Person 객체는 생성시 이름과 나이를 입력받았다.
Person 객체를 배열로 생성하게 되면 다음과 같은 형식이 될것이다
Person arr[10];// 또는Person* pArr =newPerson[10];
이러한 형태로 선언하려면 이에 맞는 생성자가 있어야 한다.
Person 객체에 매개변수를 받지 않는 객체를 선언하고, 이름과 나이를 설정하는 함수를 만들어보자.
Person 클래스 추가 메서드
Person() : 매개변수를 받지 않는 생성자
setInfo(char* name, int age) : 이름과 나이를 전달받아 저장
Person.h
#ifndef __PERSON__#define__PERSON__classPerson{char* name;int age;public:Person(constchar*,int);Person(); // 매개변수가 없는 생성자 추가~Person();voidshowInfo() const;voidsetInfo(char*,int); // 이름과 나이를 세팅하는 함수 추가};#endif
Person.cpp
#include<iostream>#include"Person.h"#include<cstring>usingnamespace std;Person::Person(constchar* myname,int myage) : age(myage){int len =strlen(myname) +1; name =newchar[len];strcpy(name, myname);}Person::Person() : age(0){ cout <<"빈 객체 생성"<< endl; name =NULL;}Person::~Person(){ cout << name <<" 객체 소멸"<< endl;delete[] name;}void Person::showInfo() const { cout <<"이름 : "<< name << endl; cout <<"나이 : "<< age << endl;}void Person::setInfo(char* myname,int myage) { name = myname; age = myage;}
객체 배열 사용 예제
main.cpp
#include<iostream>usingnamespace std;#include"Person.h"#include<cstring>intmain() { Person arr[3]; // Person 객체 배열charname[100]; // 이름을 입력받기 위한 변수int age; // 나이 입력char*pName; // 동적할당하고 가리킬 포인터int len; // 동적할당 길이정보 cout <<"***** 정보 입력"<< endl;for (int i =0; i <3; i++) { cout <<"이름 : "; cin >> name; cout <<"나이 : "; cin >> age; len =strlen(name) +1; pName =newchar[len]; // 동적할당strcpy(pName, name);arr[i].setInfo(pName, age); } cout << endl <<"***** 입력받은 배열 출력"<< endl;for (int i =0; i <3; i++) {arr[i].showInfo(); }return0;}