2017-10-16 1 views
0

어쩌면 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 . . . 
+1

상속 된 생성자가 있습니까? 또한,'B' 타입의 객체를 성공적으로 만들려면 A의 코드를 호출해야합니다. –

+6

[좋은 C++ 책] (http://stackoverflow.com/questions/388242)을 다시 방문해야하는 것처럼 들립니다./the-definitive-c-book-guide-and-list) 항상 파생 클래스의 기본 부분을 구성해야합니다. – NathanOliver

+1

당신은 수업의 정의를 보여주지 않았고 당신은 'B'가 'A'에서 파생되었다는 것을 out-right로 언급하지 않았습니다. 나는 우리가 질문의 제목과 제공된 결과로부터 상속을 추측 할 수 있다고 생각한다. –

답변

1

하위 클래스가 나중에 의존하는 멤버 변수 초기화 (잠재적으로 메모리 할당 포함).

+2

생성자는 현재 개체가 초기화되는 저장소를 할당하지 않습니다. 회원 변수를 초기화하는 것만으로 요약 할 수 있습니다. – StoryTeller

관련 문제