什么是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发生了切割。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)