#include <iostream>
using namespace std;
class A
{
public:
virtual ~A() noexcept
{
cout << "A::~A()" << endl;
}
virtual void F()
{
cout << "A::F()" << endl;
}
};
class B
{
public:
~B() noexcept // ??????????????????????????
{
cout << "B::~B()" << endl;
}
virtual void F()
{
cout << "B::F()" << endl;
}
};
class C
{
public:
virtual ~C() noexcept
{
cout << "C::~C()" << endl;
}
virtual void F()
{
cout << "C::F()" << endl;
}
};
class Test : public A, public B, public C
{
public:
virtual ~Test() override
{
cout << "Test::~Test()" << endl;
}
using A::F;
using B::F;
using C::F;
};
int main()
{
Test test;
test.F();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQQp7CnB1YmxpYzoKCXZpcnR1YWwgfkEoKSBub2V4Y2VwdAoJewoJCWNvdXQgPDwgIkE6On5BKCkiIDw8IGVuZGw7Cgl9CgkKCXZpcnR1YWwgdm9pZCBGKCkKCXsKCQljb3V0IDw8ICJBOjpGKCkiIDw8IGVuZGw7Cgl9Cn07CgpjbGFzcyBCCnsKcHVibGljOgoJfkIoKSBub2V4Y2VwdCAvLyA/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/PwoJewoJCWNvdXQgPDwgIkI6On5CKCkiIDw8IGVuZGw7Cgl9CgkKCXZpcnR1YWwgdm9pZCBGKCkKCXsKCQljb3V0IDw8ICJCOjpGKCkiIDw8IGVuZGw7Cgl9Cn07CgpjbGFzcyBDCnsKcHVibGljOgoJdmlydHVhbCB+QygpIG5vZXhjZXB0Cgl7CgkJY291dCA8PCAiQzo6fkMoKSIgPDwgZW5kbDsKCX0KCQoJdmlydHVhbCB2b2lkIEYoKQoJewoJCWNvdXQgPDwgIkM6OkYoKSIgPDwgZW5kbDsKCX0KfTsKCmNsYXNzIFRlc3QgOiBwdWJsaWMgQSwgcHVibGljIEIsIHB1YmxpYyBDCnsKcHVibGljOgoJdmlydHVhbCB+VGVzdCgpIG92ZXJyaWRlCgl7CgkJY291dCA8PCAiVGVzdDo6flRlc3QoKSIgPDwgZW5kbDsKCX0KCQoJdXNpbmcgQTo6RjsKCXVzaW5nIEI6OkY7Cgl1c2luZyBDOjpGOwp9OwoKaW50IG1haW4oKSAKewoJVGVzdCB0ZXN0OwoJdGVzdC5GKCk7CglyZXR1cm4gMDsKfQ==