#include <iostream>
using namespace std;
struct IBaseInterface {
virtual void madeMeCool() = 0;
};
struct ICoolInterface : IBaseInterface {
/* тут что-то оригинальное своё */
virtual void madeMeCool() override {
cout << "ICoolInterface сделал cool\n";
}
};
struct ICoolerInterface: IBaseInterface {
/* тут что-то совсем другое своё */
virtual void madeMeCool() override {
cout << "ICoolerInterface тоже сделал cool\n";
}
};
struct CCoolImpl: virtual ICoolInterface, virtual ICoolerInterface {
/* всё сделано по правилам, и ничего, как говорится, не предвещало */
virtual void madeMeCool() override {
ICoolInterface::madeMeCool();
ICoolerInterface::madeMeCool();
cout << "CCoolImpl сделал cool вдогоночку\n";
}
};
int main() {
CCoolImpl cool;
cool.madeMeCool();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IElCYXNlSW50ZXJmYWNlIHsKICB2aXJ0dWFsIHZvaWQgbWFkZU1lQ29vbCgpID0gMDsKfTsKICAgICAKc3RydWN0IElDb29sSW50ZXJmYWNlIDogSUJhc2VJbnRlcmZhY2UgewogIC8qINGC0YPRgiDRh9GC0L4t0YLQviDQvtGA0LjQs9C40L3QsNC70YzQvdC+0LUgINGB0LLQvtGRICovIAogIHZpcnR1YWwgdm9pZCBtYWRlTWVDb29sKCkgb3ZlcnJpZGUgewogICAgY291dCA8PCAiSUNvb2xJbnRlcmZhY2Ug0YHQtNC10LvQsNC7IGNvb2xcbiI7CiAgfQkKfTsKCnN0cnVjdCBJQ29vbGVySW50ZXJmYWNlOiBJQmFzZUludGVyZmFjZSB7CiAgLyog0YLRg9GCINGH0YLQvi3RgtC+INGB0L7QstGB0LXQvCDQtNGA0YPQs9C+0LUg0YHQstC+0ZEgKi8gCiAgdmlydHVhbCB2b2lkIG1hZGVNZUNvb2woKSBvdmVycmlkZSB7CiAgICBjb3V0IDw8ICJJQ29vbGVySW50ZXJmYWNlINGC0L7QttC1INGB0LTQtdC70LDQuyBjb29sXG4iOwogIH0JCn07CiAgICAgCnN0cnVjdCBDQ29vbEltcGw6IHZpcnR1YWwgSUNvb2xJbnRlcmZhY2UsIHZpcnR1YWwgSUNvb2xlckludGVyZmFjZSB7CiAgLyog0LLRgdGRINGB0LTQtdC70LDQvdC+INC/0L4g0L/RgNCw0LLQuNC70LDQvCwg0Lgg0L3QuNGH0LXQs9C+LCDQutCw0Log0LPQvtCy0L7RgNC40YLRgdGPLCDQvdC1INC/0YDQtdC00LLQtdGJ0LDQu9C+ICovCiAgdmlydHVhbCB2b2lkIG1hZGVNZUNvb2woKSBvdmVycmlkZSB7CiAgICBJQ29vbEludGVyZmFjZTo6bWFkZU1lQ29vbCgpOwogICAgSUNvb2xlckludGVyZmFjZTo6bWFkZU1lQ29vbCgpOwogICAgY291dCA8PCAiQ0Nvb2xJbXBsINGB0LTQtdC70LDQuyBjb29sINCy0LTQvtCz0L7QvdC+0YfQutGDXG4iOwogIH0JCn07CgppbnQgbWFpbigpIHsKICBDQ29vbEltcGwgY29vbDsKICBjb29sLm1hZGVNZUNvb2woKTsKICByZXR1cm4gMDsKfQ==