기본 클래스에서 파생 된 클래스가 있다고 가정합니다. 다형성을 사용하면 (가상 함수를 사용하여) 기본 클래스에 대한 포인터를 통해 파생 클래스의 함수를 호출 할 수 있습니다. 즉, 기본 클래스의 멤버로 "위장 된"파생 클래스 멤버를 가질 수 있습니다. 이를 염두에두면 생성자의 기본 클래스가 실제로 파생 클래스의 멤버를 구성 할 수 있습니까? (기본 클래스의 멤버로 "척"하므로 아무 것도 부러지지 않습니다)? 논리적으로, 나는 이것이 작동하지 않아야하는 이유가 없다는 것을 알지만 구문 론적으로 어떻게해야하는지 알 수 없다. 이것이 가능하지 않다면, 왜 안 되니?기본 클래스의 생성자 클래스 'C++의 생성자
파생 클래스의 멤버를 구성하고 기본 클래스의 멤버로 반환하는 별도의 함수를 가질 수 있음을 알고 있습니다. 이것이 이것이 불가능 해지면 내가해야 할 일이다. 그러나 그것이 생성자로서 갖는 것이 더 깔끔할 것이다. (그것이이 분리 된 함수가 기본적으로하는 것이기 때문에).
편집 : 다음,이 달성 할 수있는 위에서 언급 한 바와 같이
class base
{
base()
{
this=new derived(); //This is what I am looking for
}
virtual func();
};
class derived : public base
{
derived() : base()
{}
func()
{
...
}
};
: 실제로
base *fake_base_constructor()
{
return new derived();
}
, 여러있을 것입니다 여기에 내가 무엇을 찾고의 예입니다 파생 클래스를 만들고 기본 클래스 생성자는 매개 변수를 기준으로 선택하지만 개념적으로는 하나만 있으면됩니다.
'내가 원하는 코드'를 일부 추가하십시오. "기본 클래스의 구성원 인 척"(구성원 데이터도 포함됩니까?)이란 의미는 무엇입니까? "기본 클래스의 구성원으로 반환"한다는 것은 무엇을 의미합니까? – pmr
당신이 묘사하려는 것을 보여주기 위해 최소한 * 시도 *하는 코드가 있습니까? 그리고 다형성은 아무것도 "척하지"않습니다. 캐스팅 *은 그렇지 않은 것처럼 가장합니다. 다형성은 파생 오버라이드를 통한 동작 수정입니다. 템플리트를 통해 정적 폴리 모프 (static-polymorph) 할 수도 있지만, 원하는 것처럼 들리지는 않습니다. – WhozCraig
"아무 것도 부러지지 않는다"는 것은 무엇을 의미합니까? 하위 클래스가 부모의 불변성 (모든 하위 클래스에 의해 유지되어야 함)을 손상시키지 않는다는 것을 보장하는 것과 같은 것 같습니다. 이거 뭡니까? – RonaldBarzell