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 + -
显示快捷键?