diff --git a/lectures/25_inheritance/README.md b/lectures/25_inheritance/README.md index 250c141..59b251d 100644 --- a/lectures/25_inheritance/README.md +++ b/lectures/25_inheritance/README.md @@ -181,6 +181,7 @@ We develop this student_test.cpp program. #include +```cpp class A { public: A() { @@ -209,3 +210,40 @@ int main() { std::cout << std::endl; return 0; } +``` + +## 25.8 What will be printed when running this program? + +```cpp +#include + +class A { +public: + A() { + std::cout << "A"; + } + ~A() { + std::cout << "A"; + } +}; + +class B : public A { +public: + B() { + std::cout << "B"; + } + ~B() { + std::cout << "B"; + } +}; + +int main() { + { + B* p = new B; + B b; + delete p; + } + std::cout << std::endl; + return 0; +} +``` diff --git a/lectures/25_inheritance/exercises/exercise2.cpp b/lectures/25_inheritance/exercises/exercise2.cpp new file mode 100644 index 0000000..232778b --- /dev/null +++ b/lectures/25_inheritance/exercises/exercise2.cpp @@ -0,0 +1,32 @@ +#include + +class A { +public: + A() { + std::cout << "A"; + } + ~A() { + std::cout << "A"; + } +}; + +class B : public A { +public: + B() { + std::cout << "B"; + } + ~B() { + std::cout << "B"; + } +}; + +int main() { + { + B* p = new B; + B b; + delete p; + } + std::cout << std::endl; + return 0; +} +