为了账号安全,请及时绑定邮箱和手机立即绑定

为什么不实例化子类对象?多此一举?

既然子类公有继承了父类,那就可以条用父类的成员函数,那为什么在实例化的时候不直接实例化子类对象,例如:Circle *cir=new Circle(3,5,40),而是要实例化成父类对象,反而造成了麻烦

正在回答

2 回答

视频中已经实例化了:

(1)Circle *cir=new Circle(3,5,40);Shape *shape1 = cir;

(2)Shape *shape1 = new Circle(3,5,4.0);

之间的区别只是子类对象有没有子类指针指向;题主(1)应该是想说子类对象有了子类指针指向的话,就可以利用删除子类指针来调用子类析构函数了,所以第二种做法非要再加上virtual虚析构函数,就是多此一举;

其实,在使用的时候,我们用父类指针指向子类对象,什么时候结束使用该指针,如果使用(1),则要delete cir;可是我们已经写代码不知道写到哪里去了,当父类指针shape1用完后,就地delete shape1;是比较实在的,不然就要再翻山越岭去找子类指针;或者万一我们在父类指针shape1没有使用完之前,不小心delete cir;那么程序还要调用shape1,就会出现意想不到的问题;

1 回复 有任何疑惑可以回复我~

视频里不是都实例化了的吗

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之多态篇
  • 参与学习       66236    人
  • 解答问题       314    个

本教程将带领大家体会面向对象三大特性中的多态特性

进入课程

为什么不实例化子类对象?多此一举?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信