add ex02
This commit is contained in:
parent
788f73331e
commit
037daaf8e9
25
ex02/Makefile
Normal file
25
ex02/Makefile
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
CXX = c++
|
||||||
|
CPPFLAGS = -std=c++98 -Wall -Wextra -Werror -g
|
||||||
|
SRCDIR = src
|
||||||
|
OBJDIR = obj
|
||||||
|
NAME = ex02
|
||||||
|
|
||||||
|
SRCS = $(wildcard $(SRCDIR)/*.cpp)
|
||||||
|
OBJS = $(patsubst $(SRCDIR)/%.cpp,$(OBJDIR)/%.o,$(SRCS))
|
||||||
|
|
||||||
|
all: $(NAME)
|
||||||
|
|
||||||
|
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
|
||||||
|
mkdir -p obj
|
||||||
|
$(CXX) $(CPPFLAGS) -c $< -o $@
|
||||||
|
|
||||||
|
$(NAME): $(OBJS)
|
||||||
|
$(CXX) $(CPPFLAGS) $^ -o $@
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf $(OBJDIR)/*.o
|
||||||
|
|
||||||
|
fclean: clean
|
||||||
|
rm -fr $(NAME)
|
||||||
|
|
||||||
|
re: fclean all
|
34
ex02/src/AAnimal.cpp
Normal file
34
ex02/src/AAnimal.cpp
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#include "AAnimal.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
AAnimal::AAnimal()
|
||||||
|
{
|
||||||
|
std::cout << "AAnimal()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
AAnimal::AAnimal(const AAnimal& src)
|
||||||
|
{
|
||||||
|
*this = src;
|
||||||
|
}
|
||||||
|
|
||||||
|
AAnimal& AAnimal::operator=(const AAnimal &src)
|
||||||
|
{
|
||||||
|
this->type = src.type;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
AAnimal::~AAnimal()
|
||||||
|
{
|
||||||
|
std::cout << "~AAnimal()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AAnimal::makeSound() const
|
||||||
|
{
|
||||||
|
std::cout << "OuGAABounga" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string AAnimal::getType() const
|
||||||
|
{
|
||||||
|
return this->type;
|
||||||
|
}
|
19
ex02/src/AAnimal.hpp
Normal file
19
ex02/src/AAnimal.hpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class AAnimal
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
AAnimal();
|
||||||
|
AAnimal(const AAnimal& src);
|
||||||
|
AAnimal &operator=(const AAnimal& src);
|
||||||
|
virtual ~AAnimal();
|
||||||
|
|
||||||
|
std::string getType() const;
|
||||||
|
|
||||||
|
virtual void makeSound() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
std::string type;
|
||||||
|
};
|
24
ex02/src/Brain.cpp
Normal file
24
ex02/src/Brain.cpp
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#include "Brain.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
Brain& Brain::operator=(const Brain &src)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < 100; i++)
|
||||||
|
this->ideas[i] = src.ideas[i];
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
Brain::~Brain()
|
||||||
|
{
|
||||||
|
std::cout << "~Brain()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
Brain::Brain()
|
||||||
|
{
|
||||||
|
std::cout << "Brain()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
Brain::Brain(const Brain& src)
|
||||||
|
{
|
||||||
|
*this = src;
|
||||||
|
}
|
14
ex02/src/Brain.hpp
Normal file
14
ex02/src/Brain.hpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class Brain
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Brain();
|
||||||
|
Brain(const Brain& src);
|
||||||
|
~Brain();
|
||||||
|
Brain& operator=(const Brain& src);
|
||||||
|
private:
|
||||||
|
std::string ideas[100];
|
||||||
|
};
|
31
ex02/src/Cat.cpp
Normal file
31
ex02/src/Cat.cpp
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#include "Cat.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
Cat::Cat()
|
||||||
|
{
|
||||||
|
this->brain = new Brain();
|
||||||
|
this->type = "Cat";
|
||||||
|
std::cout << "Cat()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
Cat& Cat::operator=(const Cat& src)
|
||||||
|
{
|
||||||
|
this->type = src.type;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
Cat::~Cat()
|
||||||
|
{
|
||||||
|
delete this->brain;
|
||||||
|
std::cout << "~Cat()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
Cat::Cat(const Cat& src): AAnimal()
|
||||||
|
{
|
||||||
|
*this = src;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Cat::makeSound() const
|
||||||
|
{
|
||||||
|
std::cout << "Meow Meow !" << std::endl;
|
||||||
|
}
|
20
ex02/src/Cat.hpp
Normal file
20
ex02/src/Cat.hpp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "./AAnimal.hpp"
|
||||||
|
#include "./Brain.hpp"
|
||||||
|
|
||||||
|
class Cat : public AAnimal
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Cat(const Cat& src);
|
||||||
|
Cat &operator=(const Cat& src);
|
||||||
|
Cat();
|
||||||
|
~Cat();
|
||||||
|
|
||||||
|
void makeSound() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Brain* brain;
|
||||||
|
};
|
32
ex02/src/Dog.cpp
Normal file
32
ex02/src/Dog.cpp
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
#include "Dog.hpp"
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
Dog::Dog()
|
||||||
|
{
|
||||||
|
this->type = "Dog";
|
||||||
|
this->brain = new Brain();
|
||||||
|
std::cout << "Dog()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
Dog& Dog::operator=(const Dog& src)
|
||||||
|
{
|
||||||
|
this->type = src.type;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
Dog::~Dog()
|
||||||
|
{
|
||||||
|
delete this->brain;
|
||||||
|
std::cout << "~Dog()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
Dog::Dog(const Dog& src): AAnimal()
|
||||||
|
{
|
||||||
|
*this = src;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Dog::makeSound() const
|
||||||
|
{
|
||||||
|
std::cout << "Ouaf ouaf !" << std::endl;
|
||||||
|
}
|
20
ex02/src/Dog.hpp
Normal file
20
ex02/src/Dog.hpp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "./AAnimal.hpp"
|
||||||
|
#include "./Brain.hpp"
|
||||||
|
|
||||||
|
class Dog : public AAnimal
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Dog(const Dog& src);
|
||||||
|
Dog &operator=(const Dog& src);
|
||||||
|
Dog();
|
||||||
|
~Dog();
|
||||||
|
|
||||||
|
void makeSound() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Brain* brain;
|
||||||
|
};
|
34
ex02/src/WrongAnimal.cpp
Normal file
34
ex02/src/WrongAnimal.cpp
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#include "WrongAnimal.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
WrongAnimal::WrongAnimal()
|
||||||
|
{
|
||||||
|
std::cout << "WrongAnimal()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
WrongAnimal::WrongAnimal(const WrongAnimal& src)
|
||||||
|
{
|
||||||
|
*this = src;
|
||||||
|
}
|
||||||
|
|
||||||
|
WrongAnimal& WrongAnimal::operator=(const WrongAnimal &src)
|
||||||
|
{
|
||||||
|
this->type = src.type;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
WrongAnimal::~WrongAnimal()
|
||||||
|
{
|
||||||
|
std::cout << "~WrongAnimal()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
void WrongAnimal::makeSound() const
|
||||||
|
{
|
||||||
|
std::cout << "OuGABounga" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string WrongAnimal::getType() const
|
||||||
|
{
|
||||||
|
return this->type;
|
||||||
|
}
|
19
ex02/src/WrongAnimal.hpp
Normal file
19
ex02/src/WrongAnimal.hpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class WrongAnimal
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
WrongAnimal();
|
||||||
|
WrongAnimal(const WrongAnimal& src);
|
||||||
|
WrongAnimal &operator=(const WrongAnimal& src);
|
||||||
|
virtual ~WrongAnimal();
|
||||||
|
|
||||||
|
std::string getType() const;
|
||||||
|
|
||||||
|
void makeSound() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
std::string type;
|
||||||
|
};
|
24
ex02/src/WrongCat.cpp
Normal file
24
ex02/src/WrongCat.cpp
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#include "WrongCat.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
WrongCat::WrongCat()
|
||||||
|
{
|
||||||
|
this->type = "WrongCat";
|
||||||
|
std::cout << "WrongCat()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
WrongCat& WrongCat::operator=(const WrongCat& src)
|
||||||
|
{
|
||||||
|
this->type = src.type;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
WrongCat::~WrongCat()
|
||||||
|
{
|
||||||
|
std::cout << "~WrongCat()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
WrongCat::WrongCat(const WrongCat& src): WrongAnimal()
|
||||||
|
{
|
||||||
|
*this = src;
|
||||||
|
}
|
14
ex02/src/WrongCat.hpp
Normal file
14
ex02/src/WrongCat.hpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "./WrongAnimal.hpp"
|
||||||
|
|
||||||
|
class WrongCat : public WrongAnimal
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
WrongCat(const WrongCat& src);
|
||||||
|
WrongCat &operator=(const WrongCat& src);
|
||||||
|
WrongCat();
|
||||||
|
~WrongCat();
|
||||||
|
};
|
16
ex02/src/main.cpp
Normal file
16
ex02/src/main.cpp
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
#include "AAnimal.hpp"
|
||||||
|
#include "Cat.hpp"
|
||||||
|
#include "Dog.hpp"
|
||||||
|
#include "WrongCat.hpp"
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
const AAnimal* j = new Dog();
|
||||||
|
delete j;
|
||||||
|
const AAnimal* i = new Cat();
|
||||||
|
delete i;
|
||||||
|
// const AAnimal* meta = new AAnimal();
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user