사육사 시뮬레이션에서 동물원을 임의의 수의 동물의 집합으로 볼 수도 있습니다.
객체는 종종 다른 객체로 구성됩니다. 예를 들어 레이싱 게임에서 레이싱카는 몸체,
4개의 타이어, 엔진과 같은 개별 객체로 구성된 단일 객체로 볼 수 있습니다.
애완동물 농장 프로그램
#include<iostream>
#include<string>
#include<vector>
using namespace std;
class Critter {
public:
Critter(const string& name = "");
string getName() const;
private:
string m_Name;
};
Critter::Critter(const string& name)
: m_Name(name)
{
}
string Critter::getName() const
{
return m_Name;
}
class Farm { //농장 클래스(vector) 선언
public:
Farm(int spaces = 1);
void Add(const Critter& aCritter);
void RollCall() const;
private:
vector<Critter> m_Critters; //농장을 나타내기위한 벡터 객체(크리터 객체 저장)
};
Farm::Farm(int spaces)
{
m_Critters.reserve(spaces);
}
void Farm::Add(const Critter& aCritter)
{
m_Critters.push_back(aCritter);
}
void Farm::RollCall() const
{
for (vector<Critter>::const_iterator iter = m_Critters.begin();
iter != m_Critters.end(); ++iter)
{
cout << iter->getName() << " here. " << endl;
}
}
int main(void) {
Critter crit("Poochie");
cout << "My critter's name is " << crit.getName() << endl;
cout << endl << "Creating critter farm." << endl;
Farm myFarm(3);
myFarm.Add(Critter("Moe"));
Critter crit2("Larry");
myFarm.Add(crit2);
Critter crit3("Curly");
myFarm.Add(crit3);
cout << endl << "Calling Roll..." << endl;
myFarm.RollCall();
return 0;
}
Friend 함수는 클래스의 모든 멤버에 대한 접근 권한을 갖습니다. 현재 클래스의 private 영역의 멤버 변수나 멤버 함수를 외부의 함수나 클래스가 접근 가능하도록 풀어주는 방법입니다.
연산자 오버로딩은 기본 제공되는 연산자에 대한 새로운 의미를 자신의 클래스 객체에 정의할 수 있도록 해줍니다.
프렌드 함수와 연산자 오버로딩
코드를 입력하세요