62 lines
826 B
C
62 lines
826 B
C
// { dg-do run }
|
|
// prms-id: 3068
|
|
|
|
extern "C" int printf(const char *, ...);
|
|
extern "C" void exit(int);
|
|
|
|
class LB {
|
|
public:
|
|
virtual int test() { return 0; }
|
|
virtual ~LB() { }
|
|
protected:
|
|
LB() { }
|
|
};
|
|
|
|
class RRB {
|
|
public:
|
|
virtual ~RRB() { }
|
|
virtual void test2(int a) { }
|
|
};
|
|
|
|
class RR : public RRB {
|
|
public:
|
|
virtual ~RR() { }
|
|
};
|
|
|
|
class RL {
|
|
public:
|
|
virtual void real(int a) {
|
|
printf("RL::real\n");
|
|
}
|
|
};
|
|
|
|
|
|
class R : public RL, public RR {
|
|
public:
|
|
virtual void test3(int a) { }
|
|
virtual void test2(int a) { }
|
|
};
|
|
|
|
class L : public LB {
|
|
};
|
|
|
|
class C : public L, public R {
|
|
public:
|
|
C() { }
|
|
virtual ~C() {
|
|
printf("C::~C\n");
|
|
exit(1);
|
|
}
|
|
virtual void real(int a) {
|
|
printf("RL::real\n");
|
|
}
|
|
};
|
|
|
|
int main() {
|
|
C& bb = *new C;
|
|
R& mv = bb;
|
|
bb.real(0);
|
|
mv.real(0);
|
|
return 0;
|
|
}
|