🎉」 init: hello world !

This commit is contained in:
2025-08-15 15:11:43 +02:00
commit c9ae5bee78
13 changed files with 559 additions and 0 deletions

66
ex02/Base.cpp Normal file
View File

@@ -0,0 +1,66 @@
#include "Base.hpp"
#include <cstdlib>
#include <iostream>
Base *generate(void)
{
std::srand(time(0));
switch (std::rand() % 3) {
case 0:
std::cout << "A class generated :D" << std::endl;
return new A;
case 1:
std::cout << "B class generated :D" << std::endl;
return new B;
case 2:
std::cout << "C class generated :D" << std::endl;
return new C;
};
return new A;
}
void identify(Base *p)
{
if (dynamic_cast<A *>(p))
{
std::cout << "omg it's an A object !" << std::endl;
return;
}
if (dynamic_cast<B *>(p))
{
std::cout << "omg it's a B object !" << std::endl;
return;
}
if (dynamic_cast<C *>(p))
{
std::cout << "omg it's a C object !" << std::endl;
return;
}
std::cout << "what is this D:" << std::endl;
}
void identify(Base &p)
{
try {
(void)dynamic_cast<A &>(p);
std::cout << "omg it's an A object !" << std::endl;
return;
}
catch (...) {}
try {
(void)dynamic_cast<B &>(p);
std::cout << "omg it's an B object !" << std::endl;
return;
}
catch (...) {}
try {
(void)dynamic_cast<C &>(p);
std::cout << "omg it's an C object !" << std::endl;
return;
}
catch (...) {}
std::cout << "what is this D:" << std::endl;
}
Base::~Base(void) {}