为了账号安全,请及时绑定邮箱和手机立即绑定
怎么人这么少
析构函数不用虚一下么
讲的很好,受益匪浅

已采纳回答 / 慕妹0960782
obj 是指向基类的指针,不能直接操作子类的方法。dynamic_cast主要用于在多态的时候,它允许在运行时刻进行类型转换,从而使程序能够在一个类层次结构中安全地转换类型,把基类指针(引用)转换为派生类指针(引用)。
1 class Dog 后少个 “{”
2 // 默认构造函数
Animal();
改为 Animal(){};
Dog类同理
否则出现undefined reference 问题
test.cpp:53:12: warning: deleting object of abstract class type ‘CanShot’ which has non-virtual destructor will cause undefined behaviour [-Wdelete-non-virtual-dtor]

需要将 CanShot 的析构函数声明为虚析构函数:——》~CanShot(){}, gcc version 5.3.1 下测试的
记得包含 #include <typeinfo>
果然是图库啊

已采纳回答 / ljwzz
抽象类和接口类只是不能通过自身的构造方法来实例化,但是可以使用子类的构造方法来实例化

已采纳回答 / 慕UI7911757
因为这两个虚函数需要在子类中实现,而在fiyable当中的纯虚函数没有实现。
virtual ~Shape(); 这样应该就可以了
#include <typeinfo>
果然有毒,估计编译器问题

已采纳回答 / 一片天空一片海
有虚函数的,除成员变量外,额外,32位系统占 4个字节,64位系统占8个字节,用于存储虚函数表指针地址;普通成员函数不占内存;class内部无任何成员或者都是普通成员函数时,整个类的实例占用一个字节,用于表示实例的存在;

已采纳回答 / qq_辉_映_0
我也有这样的问题 , 看看答案,  是他的问题  只要咱们对了就可以了!!!

最新回答 / qq_淡淡的_6
sum在类中的定义static int sum应该把static去掉,static是静态存储关键字,加了static,sum相当于成为了一个全局变量,没有把类实例化之前,就已经分配好内存给sum了,而每一个的实例对sum进行操作,都是对同一个变量进行操作,所以sum是两个实例的x,y,z相加的和,刚好是54。
课程须知
本课程是C++初级课程 1、熟练掌握C++语言基础语法
老师告诉你能学到什么?
1、虚函数、虚析构函数、纯虚函数 2、抽象类和接口类 3、运行时类别异常 4、异常处理

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消