1 답변
-
슬라이싱은 자식클래스 오브젝트를 부모클래스의 오브젝트에 할당하는겁니다.
예를들어 다음과 같이 쓰는 경우이지요.
Base* baseptr = new Child()
좀 더 자세히 보겠습니다.
using namespace std; class Base { public: void printBase(){ cout << "print Base" << endl; } }; class Child : public Base { public: void printChild(){ cout << "print Base" << endl; } }; int main() { Child *childPtr = new Child(); Base *basePtr = childPtr; cout << "childPtr : " << childPtr << ", basePtr : " << basePtr << endl; childPtr->printBase(); //가능 childPtr->printChild(); //가능 basePtr->printBase(); //가능 //basePtr->printChild(); //불가능 }
childPtr : 0x100100e20, basePtr : 0x100100e20 print Base print Child print Base Program ended with exit code: 0
basePtr
은 분명childPtr
과 같은 객체를 가리키고 있지만basePtr
은Child
에 대한 정보를 잃어버립니다.이와 같이 자식 클래스의 어트리뷰트를 온전히 다 쓸수 없기 때문에 잘려나갔다는 의미에서 slicing이라고 표현 하지요.
댓글 입력