什么是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发生了切割

posted @   代码改变世界11  阅读(133)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示