Unreal Track 1기 [24.12.24] - OOP Summary(1)

chooha·2024년 12월 24일

TIL

목록 보기
7/60

< 필수 기능 구현 >


1. 문제


2. 완성 코드

▸ 헤더 파일

- Animal.h

#pragma once

class Animal 
{
public:
	virtual void MakeSound() = 0;
};

- Cat.h

#pragma once
#include "Animal.h"

class Cat : public Animal
{
public:
	void MakeSound();
};

- Dog.h

#pragma once
#include "Animal.h"

class Dog : public Animal
{
public:
	void MakeSound();
};

- Cow.h

#pragma once
#include "Animal.h"

class Cow : public Animal
{
public:
	void MakeSound();
};

▸ cpp 파일

- Cat.cpp

#include <iostream>
#include "Cat.h"

void Cat::MakeSound()
{
	std::cout << "Meow!" << '\n';
}

- Dog.cpp

#include <iostream>
#include "Dog.h"

void Dog::MakeSound()
{
	std::cout << "Woof!" << '\n';
}

- Cow.cpp

#include <iostream>
#include "Cow.h"

void Cow::MakeSound()
{
	std::cout << "Moo!" << '\n';
}

- Main.cpp

#include <iostream>
#include <random>
#include "Cat.h"
#include "Dog.h"
#include "Cow.h"
#include "Zoo.h"

using namespace std;

// 랜덤 동물을 생성하는 함수
// - 0, 1, 2 중 하나의 난수를 생성하여 각각 Dog, Cat, Cow 객체 중 하나를 동적으로 생성합니다.
Animal* createRandomAnimal()
{
	random_device rd;
	mt19937 gen(rd());
	uniform_int_distribution<int> dis(0, 2);

	unsigned int selection = dis(gen);

	switch (selection)
	{
	case 0:
		return new Dog();
	case 1:
		return new Cat();
	case 2:
		return new Cow();
	default:
		return nullptr;
	}
}

int main()
{
	Animal* animals[3];
	
	animals[0] = new Dog();
	animals[1] = new Cat();
	animals[2] = new Cow();

	for (auto a : animals)
	{
		a->MakeSound();
		delete a;
	}
   
	return 0;
}

0개의 댓글