< 필수 기능 구현 >
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;
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;
}