dtor11.c
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 52 行
C
52 行
#include "fail.h"
int active;
struct CD {
static CD *ctored;
CD *next;
int sig;
CD(CD const &s) : sig(s.sig+1) {
++active;
next = ctored;
ctored = this;
};
CD(int v) : sig(v) {
++active;
next = ctored;
ctored = this;
};
~CD(){
CD **head = &ctored;
--active;
if( active < 0 ) fail(__LINE__);
CD *p;
for( p = *head; p != NULL; p = p->next ) {
if( p == this ) {
*head = p->next;
break;
}
head = &(p->next);
}
if( p == NULL ) fail(__LINE__);
};
};
CD *CD::ctored;
struct useCD {
CD _f1;
useCD( const CD & f1 ) : _f1(f1) {}
};
void foo()
{
useCD qq(CD(0));
}
int main()
{
foo();
if( active != 0 ) fail(__LINE__);
_PASS;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?