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