From 9a72aa272888b42226c44f7658a6c04fd8c81f6e Mon Sep 17 00:00:00 2001 From: Fries Date: Wed, 21 Jun 2023 21:19:11 -0700 Subject: [PATCH] add AbstractClasses and a HeapMemory program. the AbstractClasses problem experiments with abstract classes and the HeapMemory program experiments with heap memory. --- src/AbstractClasses.cc | 38 ++++++++++++++++++++++++++++++++++++++ src/CMakeLists.txt | 2 ++ src/HeapMemory.cc | 25 +++++++++++++++++++++++++ 3 files changed, 65 insertions(+) create mode 100644 src/AbstractClasses.cc create mode 100644 src/HeapMemory.cc 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; +}