ctor37.c

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

C
69
字号
#include "fail.h"

int p;

struct V {
    int s;
    V();
    ~V();
};

struct DV : virtual V {
    int s;
    DV();
    ~DV();
};

struct U3 : DV {
   DV u;
};

struct DU3 : U3 {
    U3 m;
    int s;
    DU3();
    ~DU3();
};

V::~V() {
    if( p > 0 ) {
	--p;
	if( s != p ) _fail;
    } else {
	_fail;
    }
}
DV::~DV() {
    if( p > 0 ) {
	--p;
	if( s != p ) _fail;
    } else {
	_fail;
    }
}
DU3::~DU3() {
    if( p > 0 ) {
	--p;
	if( s != p ) _fail;
    } else {
	_fail;
    }
}
V::V() {
    s = p++;
}
DV::DV() : V() {
    s = p++;
}
DU3::DU3() : V(), U3(), m() {
    throw 1;
    s = p++;
}
int main() {
    try {
	DU3 x;
    } catch( ... ) {
    }
    _PASS;
}

⌨️ 快捷键说明

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