Есть ли разница с точки зрения реализации, чем дизайн композиции может отличаться от делегирования. Например, приведенный ниже код выполняет делегирование, поскольку пользователь не может получить доступ к составному объекту (то есть «а») без использования 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
};