dtors3.c
来自「this is a gcc file, you can download it 」· C语言 代码 · 共 67 行
C
67 行
// GROUPS passed destructors// Check that member and base classes get properly destructed// when an object of a derived class is destructed via a pointer// to it which only has a "compile-time" type of "pointer-to-base".//// Note that in order for this test to work properly, the destructor// for the base class should be explicitly declared to be virtual.extern "C" int printf (const char *, ...); int member_destructor_calls = 0;int middle_destructor_calls = 0;struct member_type { int data_member; member_type () {} ~member_type ();};struct base { int data_member; base () {} virtual ~base ();};struct middle : public base { member_type member1; member_type member2; middle () {} ~middle (); // should be implicitly virtual};struct derived : public middle { member_type member1; member_type member2; //~derived () {}};int main (){ base* bp = new derived; delete bp; derived *dp = new derived; delete dp; if ((member_destructor_calls != 8) || (middle_destructor_calls != 2)) { printf ("FAIL\n"); return 1; } else printf ("PASS\n"); return 0;}member_type::~member_type (){ member_destructor_calls++;}base::~base (){}middle::~middle (){ middle_destructor_calls++;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?