2011-10-07 11 views
5

私はしばらくの間C++から離れていましたが、私はこの問題に少し悩まされています。私はあなたに私の悪いコードを惜しまないだろう - 誰かが少数の値を受け入れるコンストラクタを使って、小さなクラスのための単純なヘッダファイルとソースファイルを書く方法のための「モデル回答」を投稿して、クラスのコンストラクタ?私は間違ってインラインで何かを作っていることを心配しています。ありがとうございました。C++の継承コンストラクタを書く方法

時には最も簡単な回答は、インターネット上で明確な例を見つけるのが最も難しい場合があります。

+0

なぜdownvote? –

+0

インライン展開については何を心配していますか? –

答えて

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

initializer listは、基本クラスを初期化するために使用されます。インスタンスメンバーの前に基底クラスを初期化します。 Non-virtual base classes are initialized from left to rightなので、複数の基底を持つ場合は、それらが宣言された順に初期化します。 OPは非インラインバージョンを要求したとして、私は修正して再投稿します見て

#include <iostream> 

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

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

正直なところ、私はちょっと驚いています。私はこのような単純な例をC++ FAQで見つけることができません。誰かが適切なセクションへのリンクをドロップすることができれば、私はそれを感謝します。 –

4

:ここ

は、基底クラスのコンストラクタに引数を渡す例です。

struct Base { 
    Base (int); 
}; 

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

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

これは、投票が不十分でも、受け入れられる回答である必要があります。 –

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 
    } 
}; 
関連する問題