2011-10-07 16 views
5

Nie byłem na C++ od dłuższego czasu i mam z tym trochę problemów. Oszczędzę ci mojego złego kodu - czy ktoś może napisać "odpowiedź modelową", jak napisać prosty plik nagłówkowy i plik źródłowy dla małej klasy z konstruktorem, który akceptuje kilka wartości, i przekazuje kilka do swojej bazy konstruktor klas? Martwię się, że przez pomyłkę robię coś inline. Dziękuję Ci.jak pisać konstruktory dziedziczenia C++

Czasami najprostsze odpowiedzi to najtrudniejsze do znalezienia jasne przykłady w Internecie.

+0

Dlaczego downvote? –

+0

Co cię martwi w związku z inlineingiem? –

Odpowiedz

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

Do inicjowania klas bazowych służy initializer list. Inicjuj klasy podstawowe przed członkami instancji. Non-virtual base classes are initialized from left to right, więc jeśli masz wiele baz, zainicjuj je w kolejności, w jakiej są zadeklarowane.

Oto przykład przekazywania argumentów do konstruktora klasy bazowej:

#include <iostream> 

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

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

Szczerze mówiąc, jestem trochę zaskoczony, że nie mogę znaleźć prostego przykładu takiego w C++ FAQ. Jeśli ktoś może rzucić link do odpowiedniej sekcji, byłbym wdzięczny. –

4

Widząc jak PO o wersji non-inline, będę repost z modyfikacjami.

struct Base { 
    Base (int); 
}; 

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

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

To powinno być zaakceptowaną odpowiedzią pomimo braku głosów. –

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 
    } 
};