2011-10-07 11 views
5

Sono stato via da C++ per un po ', e sto avendo un piccolo problema con questo. Ti risparmierò il mio codice errato: qualcuno può pubblicare una "risposta modello" su come scrivere un semplice file di intestazione e un file sorgente per una piccola classe con un costruttore che accetta alcuni valori e passa alcuni alla sua base costruttore di classi? Sono preoccupato che sto facendo qualcosa in linea per sbaglio. Grazie.come scrivere costruttori di ereditarietà C++

A volte le risposte più semplici sono le più difficili da trovare esempi chiari su Internet.

+0

Perché il downvote? –

+0

Di cosa ti preoccupi per l'inlining? –

risposta

8
// ExampleClass.h 
#ifndef ExampleClass_H_ 
#define ExampleClass_H_ 

#include "ExampleBase.h" 

class ExampleClass : public ExampleBase { 
public: 
    ExampleClass(int a); 
}; 

#endif 


// ExampleClass.cpp 
#include "ExampleClass.h" 

ExampleClass::ExampleClass(int a) : ExampleBase(a) 
{ 
    // other constructor stuff here 
} 
6

Il initializer list viene utilizzato per inizializzare le classi di base. Inizializza le classi di base prima dei membri di istanza. Non-virtual base classes are initialized from left to right, quindi se si dispone di più basi, inizializzarle nell'ordine in cui sono dichiarate.

Ecco un esempio di passaggio di argomenti al costruttore della classe base:

#include <iostream> 

struct Base { 
    Base(int i) { 
     std::cout << i << std::endl; 
    } 
}; 

struct Derived : public Base { 
    Derived(int i) : Base(i) {} 
}; 
+0

Onestamente, sono un po 'sorpreso dal fatto che non riesca a trovare un semplice esempio come questo nelle FAQ del C++. Se qualcuno può lasciare un link nella sezione appropriata, lo apprezzerei. –

4

Visto che l'OP ha chiesto versioni non in linea, io ripubblicare con modifiche.

struct Base { 
    Base (int); 
}; 

struct Derived : public Base { 
    Derived (int); 
}; 

Derived :: Derived (int i) 
: Base (i) 
{ 
} 
+0

Questa dovrebbe essere la risposta accettata nonostante la mancanza di voti. –

1
class Parent 
{ 
    // Parent Constructor 
    Parent(int x) 
    { 
     // Constructor Code 
    } 
}; 

class Child : public Parent 
{ 
    // Child Constructor 
    Child(int x, int y, int z) : Parent(x) 
    { 
     // Constructor Code 
    } 
};