📄 eh18.c
字号:
// Special g++ Options: -fexceptions// excess errors test - XFAIL a29k-*-* sparc64-*-elf arm-*-peclass 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 (...) { }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -