안녕하세요 대학교 소프트 재학중인데 상속 하나 제대로 이해못하는 빡대가리라서 질문드려요
주석처럼 나오게 하는게 목표인데 p1->Base::print()에서 x가 0으로 나옵니다
분명 위에 Base() : x()때문인거같은건 알겠는데 저걸 없애면 변수가 쓰레기값이 나오고
Base 생성자를 만들은 거 같은데 Derived(int x, int y) : x(x) , y(y) 에서 Base 적당한 생성자를 못찾겠다고 하더라고요
왜??? 생성자가 있는데 왜 못만들어지지?? 를 모르겠고
그렇다면 Derived로 동적 할당된 p1을 Base에 있는 print로 출력해야하는데
Derived에서 있는걸 Base로 출력하는게 또 이해가 안되고 총체적 난국인데
이런거 잘 설명된 사이트나 설명해주시면 정말 감사하겠습니다 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
Derived 의 print 에서 x만 출력하고 있으니까, 뒤의 x를 y로 일단 고치고.. 통상적으로 부모와 자식의 멤버 변수의 이름은 같게 짓지 않음. 하지만, 그럼에도 사용하고 싶다면, Derived 의 생성자를 아래처럼 바꾸셈 Derived(int x, int y) : Base(x), x(x), y(y) { } 그러면 Derived 객체를 생성할 때 받은 x값이 부모의 생성자에 의해 부모의 멤버 변수 x에도 설정됨
생성자 이니셜라이져부터 검색해서 배우고, 가상 함수를 공부해라.. 갈 길이 멀구나