Afficher un message
Vieux 29/06/2008, 18h22   #3
acehreli@gmail.com
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Question about interfaces

On Jun 29, 7:16am, "Daniel T." <danie...@earthlink.net> wrote:
> sip.addr...@gmail.com wrote:

[...]
> > But we could also use private inheritance:

>
> > class Imp1 {
> > protected:
> > void f();
> > void g();
> > };

>
> > class Interface : private Imp1 {
> > public:
> > void f() { Imp1::f(); }
> > ...
> > };

>
> Note, the above is effectively the same as composition.
>
> class Imp1 {
> public:
> void f();
> void g();
>
> };
>
> class Interface {
> Imp1 imp;
> public:
> void f() { imp.f(); }
>
> };
> > What are the advantages/disadvantages of each?

>
> The old "inheritance versus composition" question.


Not in this case though. It would be that question if the OP swapped
the class names; so to get to your example:

class Impl {
Interface interface;
public:
void f() { interface.f(); }

};

where Interface would not be an interface anymore.

> This isn't strictly a
> C++ question. Do a Google search on that term and you will get a
> plethora of opinions.
>
> > Any advise?

>
> "Favor object composition over class inheritance" (GoF)


Makes sense, but not in this question because there is an interface
that the OP is talking about. For the other types of class inheritance
like "a car HAS-AN engine", yes, that's composition.

Ali
  Réponse avec citation
 
Page generated in 0,05144 seconds with 9 queries