当前位置: 首页 > news >正文

安康市城乡建设规划局 网站河南郑州网站推广优化外包

安康市城乡建设规划局 网站,河南郑州网站推广优化外包,做网站费用滁州,个人网站如何建设引用 之前遇到一次函数调用结果的问题#xff0c;今天在这里做一下记录。 一个基类#xff0c;一个派生类#xff0c;两个类中都有一个函数名相同#xff0c;参数相同#xff0c;参数不同的函数#xff0c;创建基类指针指向派生类对象#xff0c;调用相应的函数#x…引用 之前遇到一次函数调用结果的问题今天在这里做一下记录。 一个基类一个派生类两个类中都有一个函数名相同参数相同参数不同的函数创建基类指针指向派生类对象调用相应的函数派生类指针指向基类对象调用相应的函数求其输出结果。 具体看下面的示例。 示例 开发环境 visual Studio 2017控制台输出程序。创建项目后自动生成相应的main.cpp文件本文的代码全部都是在main.cpp中编写。 示例代码 main.cpp #include iostream using namespace std;class TransferBase { public://int Fun() { cout endl; }//无法重载仅按返回值区分的函数Fun()void Fun() { cout TransferBase::Fun() endl; }virtual void Fun(int a) { cout TransferBase::Fun(int a) endl; } private: };class TransferDerived :public TransferBase { public:void Fun(int a) { cout TransferDerived::Fun(int a) endl; }//TransferDerived中的Fun(int a)与TransferBase中的Fun(int a)为多态TransferDerived中的Fun(int a)与TransferBase中的Fun()为隐藏void Fun() { cout TransferDerived::Fun() endl; }//TransferDerived中的Fun()函数与TransferBase中的Fun()函数为隐藏关系 private:};int main() {//类之间函数调用TransferBase *pBase new TransferDerived;TransferDerived *pDeri dynamic_castTransferDerived*(new TransferBase);//“dynamic_cast” : “TransferBase”不是多态类型 ,基类指针转换为派生类指针的前提是基类必须有虚函数否则编译错误转换失败,派生类指针指向为nullptrpBase-Fun();pBase-Fun(2);//pDeri为nullptr,未转换成功 pDeri-Fun();//此句正常执行pDeri-Fun(3);//pDeri为nullptr此句崩溃 }上述的代码使用dynamic_cast将基类指针强转为派生类指针失败其指针pDeri为空运行pDeri-Fun(3);时出现崩溃但是为什么在执行pDeri-Fun();的时候能正常执行呢 原因纯属意外。 dynamic_cast使用注意事项 1.用于类类型之间的强转。一般用于将基类指针转换为派生类指针或将派生类指针转换为基类指针但是将基类指针转换为派生类指针有一个前提基类中必须要有虚函数 2.指针强转失败返回值为nullptr. 上述main函数中创建派生类指针指向基类对象一开始没有在基类中编写虚函数因而编译的时候无法通过在基类中增加了虚函数之后TransferDerived pDeri dynamic_castTransferDerived(new TransferBase);才能编译通过。但上述派生类指针指向依旧为空也就是基类的对象并没有强转成功。 其没转换成功的原因是派生类继承自基类含有基类的一些函数可以自动转换为基类而基类是不含有派生类中的函数开辟的内存无法满足派生类的内存直接访问会导致内存越界故而无法直接转换为派生类。 为了使基类的对象转换为派生类对象这时需要做下面的一些修改。 修改后的示例代码 上述使用dynamic_cast后没有成功将基类对象转换为派生类对象这里先将基类的指针指向派生类对象后将指向派生类对象的指针强转为派生类指针。下面是改动后的代码 int main() { //类之间函数调用TransferBase *pBase new TransferDerived;TransferDerived *pDeri dynamic_castTransferDerived*(new TransferBase);//“dynamic_cast” : “TransferBase”不是多态类型 ,基类指针转换为派生类指针的前提是基类必须有虚函数否则编译错误转换失败,派生类指针指向为nullptr//使基类指针转换为派生类指针转换成功——先将基类指针指向派生类对象再将基类指针转换为派生类指针TransferDerived derive;TransferBase *base derive;pDeri dynamic_castTransferDerived*(base);//pDeri不为nullptr,基类指针转换为派生类指针成功//转换成功pDeri不为nullptrpBase-Fun();pBase-Fun(2);pDeri-Fun();pDeri-Fun(3); }运行结果 总结 上述涉及到的知识点 1.虚函数的使用 2.隐藏、重载、重写的区别 3.数据强转dynamic_cast. 以上是此篇文章需要具备的知识点。本文仅以记录。有关隐藏、重载、重写的介绍可以查看我之前的文章进行了解。
http://www.yutouwan.com/news/251588/

相关文章:

  • 简历制作网站免费wordpress fly主题
  • qq人脸解冻自助网站网页美工怎么做
  • 帮人网站开发维护违法一流的购物网站建设
  • 住房和城乡建设部建造师网站兰州专业网站建设报价
  • 网页网站设计用什么软件it公司
  • 贵州网站建设工作室旅游网站的广告预算怎么做
  • 网站开发方向的工作北京高端企业网站
  • 凡客衬衫官方网站建设网站建设多少钱
  • 防城港网站设计公司世界军事
  • 网站的推广方法品牌营销相关理论
  • 怎么用自己的电脑做网站服务器交友软件开发
  • 厦门网站推广优化哪家好高端大气企业网站源码
  • 全球最大的购物网站wordpress添加百度云
  • 网站 建设可行性报告如何让百度k掉网站
  • 赤峰网站制作公司全球最顶尖的设计公司
  • 代做动画毕业设计的网站手机下载国外网页视频
  • 做网站推广手机上怎么赚钱啊 正规
  • 做网站 视频加载太慢品牌设计开题报告
  • 网站开发工具安卓版做网站就是做信息整合
  • 医院网站建设城乡建设部官网查证
  • 网站快照明天更新是什么情况学校网站前置审批
  • 网站建设对比分析山西建设监理协会官方网站
  • 网站如何做才可以微信直接登录系统开发应注重对反洗钱系统进行
  • 带会员中心WordPress免费主题周口seo 网站
  • 行业数据网站自助建站工具软件
  • 南宁做网站网站类网站建设
  • 手机网站营销的网站南昌有做网站的吗
  • 佛山小学网站建设呼和浩特最好的互联网公司
  • 南京 推广 网站建设网站建设修改建议
  • IT男网站建设网站怎么看被百度收录