dtor29.c

来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 52 行

C
52
字号
#include "fail.h"

#pragma inline_depth(1)

enum E { E1, E2, E3 };

void die() {
    throw E2;
}

int x;

struct B {
    int c;
    int once;
    B() : c(0), once(0) {
    }
    ~B() {
	if( once ) {
	    fail(__LINE__);
	}
	++once;
	if( c != 0 ) {
	    die();
	}
    }
};

struct D {
    ~D() {
	x += __LINE__;
    }
};

struct L : D, B {
    void a() {
	++c;
    }
};

int main() {
    try {
	L x;
	x.a();
    } catch( E x ) {
	if( x != E2 ) fail(__LINE__);
    } catch( ... ) {
	fail(__LINE__);
    }
    _PASS;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?