最新回答 / qq_慕仙7552545
不同的头文件会包含相同的函数,只要其实现了SYSTEM函数就可以在主程序中调用了,然后每个头文件可能会有自己独特的一些函数,比如Cmath文件中的数学函数。你这个再想搞明白点的话具体可以查编程手册中,各个头文件到底包含了什么样的函数
2020-02-25
已采纳回答 / 我入戲太深
因为throw抛出来的东西就是一个string类型的“除数不能为0"这个字符串。你的第一种写法catch(string),只要是抛出来的字符串都能够捕获到,但是你在打印的时候你只能通过【cout<<"除数不能为0"<<endl;】打印出来, 因为你没有一个指针来接受你字符串内容。而用catch(string &e),捕获的时候e会指向“除数不能为0”这个字符串的地址,因此在打印的时候只需要【cout<<e<<endl】;就可以把“除数不能为0”这句话...
2020-02-25
虚函数里面有一个虚函数表偏移量的概念这里没讲好,编译的时候其实是通过父类虚函数表的偏移量大概定位函数位置,然后运行的时候通过实例类型的虚函数表的偏移量来最好定位函数位置的···
2020-01-08
对于学过一段时间的类的同学表示,老师讲的逻辑很清晰,很透彻,暂时听不懂的同学千万不要放弃,毕竟刚开始学类的时候那种懵逼的状态我是深深的理解的。
2019-11-15
最新回答 / 慕粉2248089209
这里面的虚函数都是采用的虚函数列表来进行的,如果是纯虚函数的话,该表指向一个不存在的函数,所以实例化被禁止。简单来说,就是 如果基类中含有纯虚函数,都不能实例化,在继承了该基类中的派生类中,如果不对该函数进行改写,也不能实例化。
2019-10-05
最赞回答 / chen_l
举个例子:假设不使用多态,一个代码框架写好了,功能是:一个计算图形Shape的面积.假设我们最开始只有矩形,那么我们在需要计算圆形的面积的时候需要修改框架内的代码.如果我们使用了多态,那么只需要让圆形继承Shape, 只需要新增圆形计算面积的代码,不需要修改核心代码.这样逻辑更清晰,更安全.在成千上万甚至几十万代码的项目中,这个就非常有用了.
2019-10-05
最新回答 / 青鲤
符号(变量)记录了地址,类型决定了它会被怎么解析,在C++里定义一个变量也要声明类型的。虽然这是一个子类对象的内存块,但是它用父类指针去解释这堆内存是什么(这是合法的),调用这个函数的时候是用父类定义的函数.virtual关键字则声明调用这个函数的时候要绕一下(具体实现是用虚函数表实现)。不用virtual声明:调用就直接找到函数的地址(编译的时候就确定了)用virtual声明:调用的时候去找虚函数表,通过虚函数表找函数的地址。c++语法复杂就是因为给人提供了多种选择。看应用场景.
2019-10-05