2011-10-07 10 views
5

He estado alejado de C++ por un tiempo, y estoy teniendo un pequeño problema con este. Le ahorraré mi código incorrecto. ¿Puede alguien publicar una 'respuesta modelo' sobre cómo escribir un archivo de encabezado simple y un archivo fuente para una clase pequeña con un constructor que acepte unos pocos valores y pase algunos a su base? constructor de clases? Me preocupa que haga algo en línea por error. Gracias.cómo escribir constructores de herencia C++

A veces, las respuestas más simples son las más difíciles de encontrar ejemplos claros de Internet.

+0

Por qué la downvote? –

+0

¿Qué te preocupa con respecto a la inclusión? –

Respuesta

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

El initializer list se utiliza para inicializar las clases base. Inicializa las clases base antes de los miembros de la instancia. Non-virtual base classes are initialized from left to right, por lo tanto, si tiene varias bases, inicialícelas en el orden en que se declaran.

Aquí está un ejemplo de paso de argumentos al constructor de la clase base:

#include <iostream> 

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

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

Honestamente, estoy un poco sorprendido de que no pueda encontrar un ejemplo simple como este en las preguntas frecuentes de C++. Si alguien puede soltar un enlace a la sección correspondiente, lo agradecería. –

4

Viendo como la OP solicitó versiones no en línea, voy a repost con modificaciones.

struct Base { 
    Base (int); 
}; 

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

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

Esta debería ser la respuesta aceptada a pesar de la falta de votos. –

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