dtors2.c
来自「this is a gcc file, you can download it 」· C语言 代码 · 共 75 行
C
75 行
// GROUPS passed destructors// Check that virtual destructors work correctly. Specifically,// check that when you destruct an object of a derived class for// which the base class had an explicitly declared virtual destructor// no infinite recursion occurs.//// Bug description:// The generated g++ code apparently calls the base class destructor via// the virtual table, rather than directly. This, of course, results in the// infinite recursion.extern "C" int printf (const char *, ...); int errors = 0;struct base { int member; base(); virtual ~base();}; base::base(){}base::~base(){}struct derived : public base{ int member; derived(); ~derived();}; derived::derived() : base(){}int derived_destructor_calls = 0;extern void exit (int);derived::~derived(){ if (++derived_destructor_calls > 2) errors++;}void test ();int main (){ test (); if (errors) { printf ("FAIL\n"); return 1; } else printf ("PASS\n"); return 0;}base* bp;void test(){ derived a; a.member = 99; bp = new derived; delete bp;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?