c++ - 什么是对象切片?

标签 c++ inheritance c++-faq object-slicing

在 C++ 中,什么是对象切片,什么时候发生?

最佳答案

“切片”是将派生类的对象分配给基类的实例,从而丢失部分信息 - 其中一些信息被“切片”掉了。

例如,

class A {
   int foo;
};

class B : public A {
   int bar;
};

所以类型为 B 的对象有两个数据成员,foobar .

那么如果你要写这个:
B b;

A a = b;

那么b中的信息关于成员(member)bara 中丢失.

关于c++ - 什么是对象切片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62492885/

相关文章:

javascript - 将继承与模块模式相结合

java - 需要测试静态Utils类

c++ - 为什么模板只能在头文件中实现?

c++ - 为什么我应该使用指针而不是对象本身?

c++ - 模板结构中的重载运算符

C++ Lambda 表达式 : capture by ref overhead

c++ - Qt4 Designer 使用 QTableWidget 创建对话框

c++ - gcc 问题 - 没有匹配的函数调用

javascript - obj.prototype = new ParentObj(); 之后的对象方法消失了在 JavaScript 中

c++ - 指针变量和引用变量有什么区别?