Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++ 또는 Java에서 객체 슬라이싱이란 무엇입니까?

<시간/>

개체 분할은 파생 클래스의 개체를 기본 클래스의 인스턴스에 할당할 때의 상황을 설명하는 데 사용됩니다. 이로 인해 파생 클래스 개체에 대한 메서드 및 멤버 변수가 손실됩니다. 이것을 정보가 쪼개지는 현상이라고 합니다. 예를 들어,

class Foo {
   int a;
};
   class Bar : public Foo {
   int b;
};

Bar는 Foo를 확장하므로 이제 2개의 멤버 변수 a와 b가 있습니다. 따라서 Bar 유형의 변수 막대를 만든 다음 Foo 유형의 변수를 만들고 bar를 할당하면 프로세스에서 멤버 변수 b를 잃게 됩니다. 예를 들어,

Bar bar;
Foo foo = bar;

이 경우 약 b에 대한 정보는 막대에서 손실됩니다. 이것을 멤버 슬라이싱이라고 합니다.