多分、私はGoogleに私の質問をひどく尋ねていますが、私の問題に対する答えは見つかりません。私の問題は、継承したコンストラクタがデフォルトのベースコンストラクタを呼び出すため、なぜ私は実際にその理由が得られないということです。ここに私の単純化されたバージョンがあります。私の継承したコンストラクタがベースのデフォルトのコンストラクタを呼び出す理由
例:
A.cpp
#include <iostream>
#include "A.h"
using namespace std;
A::A()
{
cout << "A" << endl;
}
B.cpp
#include <iostream>
#include "B.h"
using namespace std;
B::B()
{
cout << "B" << endl;
}
B::B(int x)
{
cout << "B" << x << endl;
}
Source.cpp
#include <iostream>
#include "A.h"
#include "B.h"
using namespace std;
int main() {
B * b = new B();
cout << "---" << endl;
B * b2 = new B(2);
system("PAUSE");
return 0;
}
出力:
A
B
---
A
B2
Press any key to continue . . .
私はちょうどBのコンストラクタが何を参照したいのですか?このように:
B
---
B2
Press any key to continue . . .
継承コンストラクタはありますか?また、 'B'型のオブジェクトを正常に構築するには、' A'のctorを呼び出す必要があります。 –
[良いC++の本]を再訪するような音です(http://stackoverflow.com/questions/388242)。/the-definitive-c-book-guide-and-list)常に派生クラスの基本部分を構築する必要があります。 – NathanOliver
あなたはあなたのクラスの定義を表示しておらず、あなたは 'B'が' A'から派生していることを明示していません。私は質問のタイトルと提供された出力から継承を推測できると思います。 –