Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Object slicing (cắt đối tượng) trong C++ hoặc Java là gì?


Object slicing mô tả tình huống khi gán đối tượng lớp dẫn xuất (derived) cho instance của lớp cơ sở (base). Điều này làm mất phương thức và biến thành viên của đối tượng derived. Gọi là thông tin bị "cắt bỏ" (sliced away).

Ví dụ:

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

Bar kế thừa Foo, có 2 thành viên a và b. Nếu tạo Bar bar; rồi gán cho Foo foo = bar;, thành viên b bị mất. Đây là member slicing.

Bar bar;
Foo foo = bar; // slicing xảy ra ở đây