From ed2bbc7fd2d01305f77b636f385e54ce53da3426 Mon Sep 17 00:00:00 2001 From: hugogogo Date: Sat, 26 Feb 2022 19:20:49 +0100 Subject: [PATCH] d04 ex01 ok change affichage + delete brain + constructors with default arguments --- d04/ex01/Cat.cpp | 27 +++++++++++++++++++++++---- d04/ex01/Cat.hpp | 4 +++- d04/ex01/Dog.cpp | 23 ++++++++++++++++++++--- d04/ex01/Dog.hpp | 3 ++- d04/ex01/a.out | Bin 0 -> 13472 bytes d04/ex01/burn | Bin 33904 -> 29328 bytes d04/ex01/main.cpp | 45 +++++++++++++++++++++++++-------------------- d04/ex01/test.cpp | 43 +++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 116 insertions(+), 29 deletions(-) create mode 100755 d04/ex01/a.out create mode 100644 d04/ex01/test.cpp diff --git a/d04/ex01/Cat.cpp b/d04/ex01/Cat.cpp index 734f11a..b9a3ace 100644 --- a/d04/ex01/Cat.cpp +++ b/d04/ex01/Cat.cpp @@ -6,15 +6,33 @@ * CONSTRUCTORS *********************************************/ -Cat::Cat( Brain * brain ) { - std::cout << COPLIEN_COLOR "Cat constructor" RESET "\n"; +/* + * default arguments in default constructor : https://stackoverflow.com/questions/187640/default-parameters-with-c-constructors + * in this cas it doesn't work i think, since both constructors don't act exactly the same + */ +Cat::Cat() { + std::cout << COPLIEN_COLOR "Cat default constructor" RESET "\n"; type = "cat"; - _brain = brain; + _brain = new Brain(); + return; +} +Cat::Cat( Brain * brain ) { + std::cout << COPLIEN_COLOR "Cat parameters constructor" RESET "\n"; + type = "cat"; + _brain = new Brain(); + *_brain = *brain; return; } -Cat::Cat( Cat const & src ) { +/* + * error: base class ‘class Animal’ should be explicitly initialized in the copy constructor [-Werror=extra] + * Cat::Cat( Cat const & src ) { + * ^~~ + * answer : https://stackoverflow.com/questions/43612772/base-class-class-a-should-be-explicitly-initialized-in-the-copy-constructor + */ +Cat::Cat( Cat const & src ) : Animal(src) { std::cout << COPLIEN_COLOR "Cat copy constructor" RESET "\n"; + _brain = new Brain(); *this = src; return; } @@ -25,6 +43,7 @@ Cat::Cat( Cat const & src ) { Cat::~Cat() { std::cout << COPLIEN_COLOR "Cat destructor" RESET "\n"; + delete _brain; return; } diff --git a/d04/ex01/Cat.hpp b/d04/ex01/Cat.hpp index 2ff1055..ba516e2 100644 --- a/d04/ex01/Cat.hpp +++ b/d04/ex01/Cat.hpp @@ -12,7 +12,9 @@ class Cat : public Animal { public: - Cat( Brain *brain = new Brain() ); + Cat(); + Cat( Brain *brain ); +// Cat( Brain *brain = new Brain() ); Cat( Cat const & src ); ~Cat(); Cat & operator=( Cat const & rhs ); diff --git a/d04/ex01/Dog.cpp b/d04/ex01/Dog.cpp index 0b9f3ba..f6f1cdb 100644 --- a/d04/ex01/Dog.cpp +++ b/d04/ex01/Dog.cpp @@ -6,14 +6,28 @@ * CONSTRUCTORS *********************************************/ -Dog::Dog( Brain *brain ) { +Dog::Dog() { std::cout << COPLIEN_COLOR "Dog constructor" RESET "\n"; type = "dog"; - _brain = brain; + _brain = new Brain(); return; } +Dog::Dog( Brain *brain ) { + std::cout << COPLIEN_COLOR "Dog constructor" RESET "\n"; + type = "dog"; + _brain = new Brain(); + *_brain = *brain; + return; +} + +/* +error: base class ‘class Animal’ should be explicitly initialized in the copy constructor [-Werror=extra] Dog::Dog( Dog const & src ) { +^~~ +answer : https://stackoverflow.com/questions/43612772/base-class-class-a-should-be-explicitly-initialized-in-the-copy-constructor +*/ +Dog::Dog( Dog const & src ) : Animal() { std::cout << COPLIEN_COLOR "Dog copy constructor" RESET "\n"; *this = src; return; @@ -25,6 +39,7 @@ Dog::Dog( Dog const & src ) { Dog::~Dog() { std::cout << COPLIEN_COLOR "Dog destructor" RESET "\n"; + delete _brain; return; } @@ -34,7 +49,9 @@ Dog::~Dog() { Dog & Dog::operator=( Dog const & rhs ) { Animal::operator=(rhs); - _brain = rhs._brain; + _brain = new Brain(); + if (this != &rhs) + _brain = rhs._brain; return *this; } diff --git a/d04/ex01/Dog.hpp b/d04/ex01/Dog.hpp index 5a75ddc..17617cd 100644 --- a/d04/ex01/Dog.hpp +++ b/d04/ex01/Dog.hpp @@ -12,7 +12,8 @@ class Dog : public Animal { public: - Dog( Brain *brain = new Brain() ); + Dog(); + Dog( Brain *brain ); Dog( Dog const & src ); ~Dog(); Dog & operator=( Dog const & rhs ); diff --git a/d04/ex01/a.out b/d04/ex01/a.out new file mode 100755 index 0000000000000000000000000000000000000000..459a130ae85e2ce647e2b392b9609e540b56d4ec GIT binary patch literal 13472 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 literal 0 HcmV?d00001 diff --git a/d04/ex01/burn b/d04/ex01/burn index 6199fb4046f0da7cb15febe7e8cc63d27b49146c..4345fd33ea42c1a4cb8c7d609ca7f85852df907f 100755 GIT binary patch literal 29328 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 NDGquMY%Z3j_`eJl*0}%x literal 33904 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 diff --git a/d04/ex01/main.cpp b/d04/ex01/main.cpp index da15404..5166e80 100644 --- a/d04/ex01/main.cpp +++ b/d04/ex01/main.cpp @@ -6,9 +6,10 @@ #include #include "color.h" +#define N_TEST "7" int main() { - std::cout << B_YELLOW "\n1rst test :" RESET "\n"; + std::cout << B_YELLOW "\n[1/" N_TEST "] test subject :" RESET "\n"; { const Animal* j = new Dog(); const Animal* i = new Cat(); @@ -16,7 +17,7 @@ int main() { delete i; } - std::cout << B_YELLOW "\n2nd test :" RESET "\n"; + std::cout << B_YELLOW "\n[2/" N_TEST "] test with brain :" RESET "\n"; { Dog * dog; Cat * cat1; @@ -24,42 +25,46 @@ int main() { Brain * brain1 = new Brain(); Brain * brain2 = new Brain(); - std::cout << B_BLUE "fill brain1 with \"giraffe\" :" RESET "\n"; + std::cout << B_BLUE "fill brain1 with \"giraffe\" :" RESET "\n"; brain1->putIdeas("giraffe"); - std::cout << B_BLUE "print brain1 :" RESET "\n"; + std::cout << B_BLUE "print brain1 :" RESET "\n"; brain1->printIdeas(); - std::cout << B_BLUE "print brain2 :" RESET "\n"; + std::cout << B_BLUE "print brain2 :" RESET "\n"; brain2->printIdeas(); - std::cout << B_BLUE "brain2 copy brain1 :" RESET "\n"; + std::cout << B_BLUE "brain2 copy brain1 :" RESET "\n"; *brain2 = *brain1; - std::cout << B_BLUE "fill brain1 with \"hippopotamus\" :" RESET "\n"; + std::cout << B_BLUE "fill brain1 with \"hippopotamus\" :" RESET "\n"; brain1->putIdeas("hippopotamus"); - std::cout << B_BLUE "print brain1 :" RESET "\n"; + std::cout << B_BLUE "print brain1 :" RESET "\n"; brain1->printIdeas(); - std::cout << B_BLUE "print brain2 :" RESET "\n"; + std::cout << B_BLUE "print brain2 :" RESET "\n"; brain2->printIdeas(); - std::cout << B_BLUE "create new dog with brain1 :" RESET "\n"; + std::cout << B_BLUE "create new dog with brain1 :" RESET "\n"; dog = new Dog(brain1); - std::cout << B_BLUE "create new cat with brain1 :" RESET "\n"; + std::cout << B_BLUE "create new cat with brain1 :" RESET "\n"; cat1 = new Cat(brain1); - std::cout << B_BLUE "cat2 copy cat1 :" RESET "\n"; + std::cout << B_BLUE "cat2 copy cat1 :" RESET "\n"; cat2 = *cat1; - std::cout << B_BLUE "fill brain1 with \"zebra\" :" RESET "\n"; + std::cout << B_BLUE "fill brain1 with \"zebra\" :" RESET "\n"; brain1->putIdeas("zebra"); - std::cout << B_BLUE "print cat1 :" RESET "\n"; + std::cout << B_BLUE "print cat1 :" RESET "\n"; cat1->printBrain(); - std::cout << B_BLUE "print cat2 :" RESET "\n"; + std::cout << B_BLUE "print cat2 :" RESET "\n"; cat2.printBrain(); + std::cout << B_BLUE "delete dog :" RESET "\n"; delete dog; + std::cout << B_BLUE "delete cat1 :" RESET "\n"; delete cat1; + std::cout << B_BLUE "delete brain1 :" RESET "\n"; delete brain1; + std::cout << B_BLUE "delete brain2 :" RESET "\n"; delete brain2; } - std::cout << B_YELLOW "\narray animal test :" RESET "\n"; + std::cout << B_YELLOW "\n[3/" N_TEST "] array animal test :" RESET "\n"; { Animal *animals[10]; int i; @@ -74,7 +79,7 @@ int main() { delete animals[i]; } - std::cout << B_YELLOW "\ncopy constructor test1 :" RESET "\n"; + std::cout << B_YELLOW "\n[4/" N_TEST "] copy constructor test1/2 :" RESET "\n"; { std::cout << B_BLUE "Cat a_cat :" RESET "\n"; Cat a_cat; @@ -82,7 +87,7 @@ int main() { Cat a_cpy_cat(a_cat); } - std::cout << B_YELLOW "\ncopy constructor test2 :" RESET "\n"; + std::cout << B_YELLOW "\n[5/" N_TEST "] copy constructor test2/2 :" RESET "\n"; { std::cout << B_BLUE "Cat a_cat :" RESET "\n"; Cat a_cat; @@ -90,7 +95,7 @@ int main() { Cat a_cpy_cat = a_cat; } - std::cout << B_YELLOW "\nassignation operator test1 :" RESET "\n"; + std::cout << B_YELLOW "\n[6/" N_TEST "] assignation operator test1 :" RESET "\n"; { std::cout << B_BLUE "Cat a_cat :" RESET "\n"; Cat a_cat; @@ -100,7 +105,7 @@ int main() { a_cpy_cat = a_cat; } - std::cout << B_YELLOW "\nassignation operator test2 :" RESET "\n"; + std::cout << B_YELLOW "\n[7/" N_TEST "] assignation operator test2 :" RESET "\n"; { std::cout << B_BLUE "const Cat *a_cat :" RESET "\n"; const Cat *a_cat = new Cat(); diff --git a/d04/ex01/test.cpp b/d04/ex01/test.cpp new file mode 100644 index 0000000..c7f9492 --- /dev/null +++ b/d04/ex01/test.cpp @@ -0,0 +1,43 @@ +#include +class A { +public: + A & operator=( A const & rhs ) { + std::cout << "A assignation operator\n"; + _i = rhs._i; + return *this;} +private: + int _i; +}; + +class B { +public: + B() { + std::cout << "B default constructor\n"; + _a = new A();} + B( A *a ) { + std::cout << "B parameterized constructor\n"; + _a = new A(); + *_a = *a;} + + ~B() { + std::cout << "B destructor\n"; + delete _a;} +private: + A *_a; +}; + +int main() { + { + const B * b = new B(); + delete b; + } + std::cout << "\n"; + { + B * b; + A * a = new A(); + b = new B(a); + delete a; + delete b; + } + return 0; +}