什么是C++的对象切割?


我:将派生类对象的值赋值给基类对象,那么只会将将派生类从基类继承到的属性字段的值赋值给基类的对应属性,专属于派生类的值则不会被拷贝,这就叫做对象切割。

书本解释:

如果把派生类的对象赋给基类对象,那么前者中与基类对应的那一部分内容,就会拷贝到后者,而前者中所特有的内容则不会得到拷贝,这就叫做对象切割。他意味着基类对象只能访问基类的成员,而且相当于将基类成员同派生类成员相互分离

//基类

class base

  public:

         int i,j;

//派生类

class dervived:public base

  public:

         int k;

//赋值

int main()

  base b;

       derived d;

  b=d;

  return 0;

在main函数中,对象b有 i,j两个字段,对象d具有 i,j,k3个字段,赋值操作只会把i,j两个值拷贝给b,而不会拷贝k,这就使得对象d发生了切割

相关