ctor34.c
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 79 行
C
79 行
#include "fail.h"
enum cd_progress {
C_V,
C_DV,
C_DU3,
D_DU3,
D_DV,
D_V,
D__
};
cd_progress check[] = {
C_V,
C_DV,
C_V,
C_DV,
C_DU3,
D_DU3,
D_DV,
D_V,
D_DV,
D_V,
D__,
};
int c = 0;
struct V {
int v[5];
V();
~V();
};
V::V() {
if( c >= (sizeof(check)/sizeof(check[0])) ) _fail;
if( check[c++] != C_V ) _fail;
}
V::~V() {
if( c >= (sizeof(check)/sizeof(check[0])) ) _fail;
if( check[c++] != D_V ) _fail;
}
struct DV : virtual V {
int dv[10];
DV();
~DV();
};
DV::DV() {
if( c >= (sizeof(check)/sizeof(check[0])) ) _fail;
if( check[c++] != C_DV ) _fail;
}
DV::~DV() {
if( c >= (sizeof(check)/sizeof(check[0])) ) _fail;
if( check[c++] != D_DV ) _fail;
}
struct U3 : DV {
DV u;
};
struct DU3 : public U3 {
DU3();
~DU3();
};
DU3::DU3() {
if( c >= (sizeof(check)/sizeof(check[0])) ) _fail;
if( check[c++] != C_DU3 ) _fail;
}
DU3::~DU3() {
if( c >= (sizeof(check)/sizeof(check[0])) ) _fail;
if( check[c++] != D_DU3 ) _fail;
}
int main() {
{
DU3 x;
}
if( c >= (sizeof(check)/sizeof(check[0])) ) _fail;
if( check[c] != D__ ) _fail;
_PASS;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?