diff --git a/ptrtest.cpp b/ptrtest.cpp new file mode 100644 index 0000000..27f0b7a --- /dev/null +++ b/ptrtest.cpp @@ -0,0 +1,13 @@ +#include +#include + +#define GenPrint(name) \ + name() {std::cout << #name "()\n";} \ + ~name() {std::cout << "~" #name "()\n";} + +class Base {public: GenPrint(Base)}; +class A {public: GenPrint(A) std::shared_ptr base;}; +class Derived : public Base {public: GenPrint(Derived)}; + +int main() {A a; a.base.reset(new Derived());} + diff --git a/ptrtest2.cpp b/ptrtest2.cpp new file mode 100644 index 0000000..dfbda71 --- /dev/null +++ b/ptrtest2.cpp @@ -0,0 +1,13 @@ +#include +#include + +#define GenPrint(name) \ + name() {std::cout << #name "()\n";} \ + virtual ~name() {std::cout << "~" #name "()\n";} + +class Base {public: GenPrint(Base)}; +class A {public: GenPrint(A) std::unique_ptr base;}; +class Derived : public Base {public: GenPrint(Derived)}; + +int main() {A a; a.base.reset(new Derived());} +