Есть ли какая-то разница в плане реализации, как дизайн композиции может отличаться от делегирования. Например, код, который, кажется, выполняет делегирование, поскольку пользователь не может получить доступ к скомпонованному объекту (например, "a" ) без использования b. Следовательно, пользователю нужно будет вызывать интерфейсы класса b, а затем "класс b" вызывать соответствующие интерфейсы класса "a", что делает его делегированием. Это имеет смысл?
Class A {
friend class B;
private:
A(){}; //dont want user to instantiate this class object since it wont sense without any context. Just like a room with no house.
void PrintStructure(){};
};
Class B{
public:
void PrintStructure(){a.PrintStructure();} //delegate
private:
A a; //composition
};