this is a gcc file, you can download it and learn its usetility, for further detail please look at t

源代码在线查看: eh18.c

软件大小: 1331 K
上传用户: pipinooad
关键词: usetility download further detail
下载地址: 免注册下载 普通下载 VIP

相关代码

				// Special g++ Options: -fexceptions				// excess errors test - XFAIL a29k-*-* sparc64-*-elf arm-*-pe								class VB {				public:				  int n;				  VB (int v) { n = v; }				  VB (const VB& o) {				    n = o.n;				//    printf("copying VB from %d to %d\n", &o, this);				  }				};								class D : public virtual VB {				  int j;				public:				  D(int i1, int i2) : VB(i2) { j = i1; }				  VB& vb() { return *(VB*)this; }				  const VB& vb() const { return *(const VB*)this; }				};								class pD : private virtual VB {				  int j;				public:				  pD(int i1, int i2) : VB(i2) { j = i1; }				  VB& vb() { return *(VB*)this; }				  const VB& vb() const { return *(const VB*)this; }				};												int main () {				  D d(1943, 4279);				  pD pd(3621, 9527);				  VB *vb = &d.vb();				  VB *pvb = &pd.vb();								  // A catch of a public virtual base.				  try {				//    printf("Throwing D at %d (VB at %d)\n", &d, vb);				    throw d;				  }				  catch (VB& vb) {				//    printf("Catching VB at %d\n", &vb);				    if (vb.n != 4279)				      return 1;				  }				  catch (...) {				    return 1;				  }								  // A catch of a private virtual base.				  try {				//    printf("Throwing D at %d (VB at %d)\n", &pd, pvb);				    throw pd;				  }				  catch (VB& vb) {				//    printf("Catching VB at %d\n", &vb);				    // This was a private base of the throw object, don't catch it.				    return 1;				  }				  catch (...) {				  }				}							

相关资源