diff --git a/src/AbstractClasses.cc b/src/AbstractClasses.cc new file mode 100644 index 0000000..0e9796e --- /dev/null +++ b/src/AbstractClasses.cc @@ -0,0 +1,38 @@ +#include +class Bean { +public: + virtual void print_type() {} + virtual void print_sus_level() {} +}; + +class Crewmate : public Bean { + void print_type() override + { + std::cout << "i am a crewmate. unsus." << std::endl; + } + void print_sus_level() override + { + std::cout << "sus levels are quite low" << std::endl; + } +}; + +class Imposter : public Bean { + void print_type() override + { + std::cout << "i am an imposter. very unsus." << std::endl; + } + void print_sus_level() override + { + std::cout << "sus levels are very high." << std::endl; + } +}; + +int main() +{ + Bean* beans[2] = {new Crewmate, new Imposter}; + + for (Bean *bean : beans) { + bean->print_type(); + bean->print_sus_level(); + } +} diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6eff54a..61bc5de 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -8,3 +8,5 @@ add_executable(enumerations enumerations.cc) add_executable(namespaces namespaces.cc) add_executable(FunctionArguments FunctionArguments.cc) add_executable(exceptions exceptions.cc) +add_executable(HeapMemory HeapMemory.cc) +add_executable(AbstractClasses AbstractClasses.cc) diff --git a/src/HeapMemory.cc b/src/HeapMemory.cc new file mode 100644 index 0000000..5f6bfed --- /dev/null +++ b/src/HeapMemory.cc @@ -0,0 +1,25 @@ +#include +#include +#include +class Heap { + public: + Heap() { + sus = (std::string*)malloc(sizeof(std::string)); + *sus = "sus"; + } + ~Heap() { + free(sus); + } + void print_string() { + auto susi = *(this->sus); + std::cout << *(this->sus) << std::endl; + } + private: + std::string* sus; +}; +int main() +{ + Heap* heap = new Heap(); + heap->print_string(); + delete heap; +}