关于C++的若干问题。

1、派生类对象可以赋值给基类对象,反之不可;2、派生类指针值可以赋值给基类指针,反之不可;3、派生类指针不可以指向基类对象,而基类指针可以指向派生类对象。为什么会是这样呢... 1、派生类对象可以赋值给基类对象,反之不可;
2、派生类指针值可以赋值给基类指针,反之不可;
3、派生类指针不可以指向基类对象,而基类指针可以指向派生类对象。
为什么会是这样呢?
展开
 我来答
liucong07170
2010-12-15 · TA获得超过186个赞
知道小有建树答主
回答量:456
采纳率:0%
帮助的人:252万
展开全部
举个形象的例子,有一个动物,和一个猫,不管动物是什么。那么你说猫是动物是可以的,但是你能说动物是猫吗?所以应为猫具有所有动物具有的特性,所以如果猫是派生类,它具有基类所需要的属性,所以可以赋值给基类,但是基类不能赋值给派生类,因为它可能不具有派生类的某些属性,比如不是所有的动物都会抓老鼠啊,这是第一个,第二个的道理也是一样。你就假设指针是一种身份证,同样和上述道理一样。第三个,为什么基类可以指向派生类呢?因为派生类中有基类的所有东西,就算基类指向派生类,它仍然觉得自己有东西可指,它都是认识的。假如一个人能养动物,那么养猫应该是没有问题,但是如果一个人只会养猫,它可不一定能养动物。这个和生活中确实是一样的道理,不是瞎扯。
free_ing
2010-12-15 · TA获得超过138个赞
知道小有建树答主
回答量:94
采纳率:0%
帮助的人:130万
展开全部
三个问题实质是一样的。这样可以从派生类的地址空间来解释。
当给派生类分配空间时,包括了基类空间与派生类空间,并且规定高位为基类地址,低位为派生类地址。比如定义了派生类,0x00到0x09为基类的空间,0x10到0x19为派生类的自己空间。此时派生类的指针指向0x00,并且大小为0x20。而如果只定义了基类,则空间只有0x00到0x09。
这样情况下,如果把派生类对象赋值给基类,实际上只赋值了0x00到0x09部分,符合基类的要求。
如果把基类赋值给派生类,那么派生类所要求的0x10到0x19部分则不存在,因为就不能赋值。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式