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

已采纳回答 / xqy1997
*s是string地址,改成引用&s(建议下次问的时候把log信息一起附上?)

已采纳回答 / qq_慕九州0111630
每个类(含有虚函数的类)系统只会分配一张函数表,继承后的子类也是一个新的类,系统也会生成一份函数表的

已采纳回答 / weixin_慕村4306521
circle的类定义内,构造函数内coordinate *m_p=new coordinate(3,5);与数据成员中coordinate *m_p;矛盾,不妨改为如下,这样随着对象的解构,自动进行coordinate的析构函数class circle:public shape{public:circle(double r):m_p(3,5){m_r=r;cout<<"circle"<<endl;}virtual ~circle(){cout<<"~circle"<...

已采纳回答 / 我入戲太深
因为throw抛出来的东西就是一个string类型的“除数不能为0"这个字符串。你的第一种写法catch(string),只要是抛出来的字符串都能够捕获到,但是你在打印的时候你只能通过【cout<<"除数不能为0"<<endl;】打印出来, 因为你没有一个指针来接受你字符串内容。而用catch(string &e),捕获的时候e会指向“除数不能为0”这个字符串的地址,因此在打印的时候只需要【cout<<e<<endl】;就可以把“除数不能为0”这句话...

已采纳回答 / 慕勒1355447
对象的大小是指在类实例化出的对象当中,他的数据成员所占据的内存大小,而不包括成员函数,所以不占用

已采纳回答 / 慕的地9539986
就是叫你在shape类定义一个虚析构函数,不然rect和circle的析构函数不会执行

已采纳回答 / 小程序魔王
主要是可以优化代码,比如函数的参数类型可以写成父类Person,这样你传一个Farmer或Worker,函数都可以运行,但是如果你要是把函数的参数类型写成Farmer,那Worker就是类型不匹配,你还要再写一个参数类型为Worker的函数,也就是说你得写两个具有相同功能的函数,但是如果你把参数类型写成父类,那只需要写一个函数就可以了

已采纳回答 / no4990
就算改成private都可以,这个老师用的指针p不是Circle类的指针,而是int指针,所以不受访问限定符的限定。你可以用下面的代码来看,p1是Circle类的指针,p2是int指针。<...code...>

已采纳回答 / 慕尼黑8498988
子类是抽象类,只有子类对继承下来的所有纯虚函数都做了实现,子类才可以实例化对象

已采纳回答 / 慕圣1012934
不加是新在函数内新创建了一个临时变量,接收了throw传过来的值(1.1),如果加了&,就会把1.1的引用传过来,之后a就相当于1.1的别名,就不用重新创建临时变量,因为a就是throw那里的1.1,可以节省一些系统资源。

已采纳回答 / DeceiverY
一个类同时被两个或以上的类继承时,在实例化子类的同时,会造成父类的多次定义即父类被重复定义;而宏定义就是为了解决类的重复定义,当实例化子类时,对父类的定义会通过宏定义做出判断,如果没有定义就可以直接定义,如果已经定义,就会跳过。

已采纳回答 / DeceiverY
父类Car ,子类Bus,,,通过Car *p = new Bus;实例化对象后,其中的p为Car类型的指针,而*p则为Bus类型的对象,用p->所指向的就是子类的数据成员或者成员函数,而用p->Car::才为父类的

已采纳回答 / 精慕门6929950
调用对应函数时在函数前加上类名,例如p->Animal::eat();

已采纳回答 / 苏布达
父类指针指向子类对象,通过父类指针只能寻址到从父类继承到的成员函数与数据成员,子类扩展的将会被截断。但是,如果将父类中同名函数设置为虚函数,创建子类对象时将会创建子类自有的虚函数表,虚函数表指向的成员函数将覆盖父类中的同名函数。
首页上一页1234567下一页尾页
课程须知
本课程是C++初级课程 1、熟练掌握C++语言基础语法
老师告诉你能学到什么?
1、虚函数、虚析构函数、纯虚函数 2、抽象类和接口类 3、运行时类别异常 4、异常处理

微信扫码,参与3人拼团

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

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消