#include <iostream>
using namespace std;
class IParent
{
public:
virtual void foo( ) = 0;
};
class Root : public IParent {
private:
virtual void foo( ) override { cout << "foo!"; }
};
class Test {
public:
Test( IParent& p ) : m_parent(p) {
m_parent.foo(); // Wieso kann ich hier eine private Methode von Root aufrufen?
}
private:
IParent& m_parent;
};
int main()
{
//Ausgeführter Code:
Root root;
Test t( root );
root.foo();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgSVBhcmVudAp7CnB1YmxpYzoKCiAgICB2aXJ0dWFsIHZvaWQgZm9vKCAgKSA9IDA7Cn07CgpjbGFzcyAgUm9vdCA6IHB1YmxpYyBJUGFyZW50IHsKcHJpdmF0ZToKIHZpcnR1YWwgdm9pZCBmb28oICkgb3ZlcnJpZGUgeyBjb3V0IDw8ICJmb28hIjsgfQp9OwoKY2xhc3MgVGVzdCB7CnB1YmxpYzoKIFRlc3QoIElQYXJlbnQmIHAgKSA6IG1fcGFyZW50KHApIHsKICAgICBtX3BhcmVudC5mb28oKTsgLy8gV2llc28ga2FubiBpY2ggaGllciBlaW5lIHByaXZhdGUgTWV0aG9kZSB2b24gUm9vdCBhdWZydWZlbj8KICB9CnByaXZhdGU6CiAgSVBhcmVudCYgbV9wYXJlbnQ7Cn07CgppbnQgbWFpbigpCnsKICAvL0F1c2dlZsO8aHJ0ZXIgQ29kZToKICBSb290IHJvb3Q7CiAgVGVzdCB0KCByb290ICk7CiAgcm9vdC5mb28oKTsKfQ==