Ereditarietà degli oggetti stessi

1

Crea una nuova gerarchia di ereditarietà con l'aiuto di C ++. Penso a:

Why there is no inheritance from the class objects? Abstract example (on abstract C++):

struct Foo { int v; Foo(int a) : v(a) {} };
struct Buz : public Foo(2) { ... }

So, the Buz is inherited only from instance of Foo - Foo(2).

Questa idea può essere utile? Esistono possibili implementazioni o idee correlate?

    
posta m0nhawk 10.12.2012 - 21:15
fonte

3 risposte

6

C ++ ha ciò che stai descrivendo, ma l'inizializzazione viene eseguita come parte del costruttore:

struct Buz : public Foo {
  Buz() : Foo(2) { ... };
};
    
risposta data 10.12.2012 - 21:23
fonte
2

Is there any possible implementations or related ideas?

Molte lingue che utilizzano l'ereditarietà del prototipo fanno cose del genere.

Il problema che si incontra è che da un punto di vista logico, il concetto è utile solo in linguaggi molto dinamici dove 'ereditarietà' non significa molto e la sintassi è sintassi per 'mettere tutti i campi da X a Y 'o in lingue pure senza variabili mutabili. Se la lingua consente la mutevolezza anche se erediti da Foo(2) ciò non significa che non sarà Foo(3) domani o che due% istanze diFoo(2) sono equivalenti - che ti porta in problemi quando provi a vedere se Buz eredita da Foo(2) .

    
risposta data 10.12.2012 - 22:06
fonte
1

Puoi anche farlo usando i modelli.

template <int n>

 
class Foo
{
public:
  int _n;
  Foo():_n(n){}

};

class Der : public Foo
{
public:
  Der(){};
};

int main()
{
  Foo a;
  Der d;
  return 0;
};
   
    
risposta data 12.12.2012 - 12:32
fonte

Leggi altre domande sui tag