기본 클래스에 알려진 상태 부분을 재설정하기 위해 기본 클래스 객체를 파괴하고 구성하는 것이 합법적입니까?명시 적으로 기본 클래스 소멸자/생성자를 호출하는 것이 합법적입니까?
class C : public BaseClass {...};
C c;
c.BaseClass::~BaseClass();
new (static_cast<BaseClass*>(&c)) BaseClass;
분명히 우리가 클래스의 소스 코드에 액세스 할 수 있다면이 효과를 얻을 수있는 다른 방법이 있습니다. 그러나 이것이 유효하지 않은 특별한 이유가있는 경우 언어 관점에서 알고 싶습니다.
아니요. 시작하려면 '& c'가 기본 클래스 하위 개체의 주소와 동일하다는 보장이 없습니다. –
공정한 포인트. 나는 캐스트를 추가했다. –
기본 클래스에서'reconstruct' 메소드를 사용 하시겠습니까? 이것은 X-Y 문제처럼 들립니다. – sp2danny