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