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

没有自己的网站做百度竞价凡客设计

没有自己的网站做百度竞价,凡客设计,广东省自然资源厅领导分工,商务网站的规划流程转载#xff1a;http://www.weixueyuan.net/view/6377.html 在C中#xff0c;编译期的类型转换有可能会在运行时出现错误#xff0c;特别是涉及到类对象的指针或引用操作时#xff0c;更容易产生错误。Dynamic_cast操作符则可以在运行期对可能产生问题的类型转换进行测试。…转载http://www.weixueyuan.net/view/6377.html 在C中编译期的类型转换有可能会在运行时出现错误特别是涉及到类对象的指针或引用操作时更容易产生错误。Dynamic_cast操作符则可以在运行期对可能产生问题的类型转换进行测试。 例1 #includeiostreamusing namespace std;class base{public : void m(){coutmendl;}};class derived : public base{public: void f(){coutfendl;}};int main(){ derived * p; p new base; p static_castderived *(new base); p-m(); p-f(); return 0;} 本例中定义了两个类base类和derived类这两个类构成继承关系。在base类中定义了m函数derived类中定义了f函数。在前面介绍多态时我们一直是用基类指针指向派生类或基类对象而本例则不同了。本例主函数中定义的是一个派生类指针当我们将其指向一个基类对象时这是错误的会导致编译错误。但是通过强制类型转换我们可以将派生类指针指向一个基类对象p static_castderived *(new base);语句实现的就是这样一个功能这样的一种强制类型转换时合乎C语法规定的但是是非常不明智的它会带来一定的危险。在程序中p是一个派生类对象我们将其强制指向一个基类对象首先通过p指针调用m函数因为基类中包含有m函数这一句没有问题之后通过p指针调用f函数。一般来讲因为p指针是一个派生类类型的指针而派生类中拥有f函数因此p-f();这一语句不会有问题但是本例中p指针指向的确实基类的对象而基类中并没有声明f函数虽然p-f();这一语句虽然仍没有语法错误但是它却产生了一个运行时的错误。换言之p指针是派生类指针这表明程序设计人员可以通过p指针调用派生类的成员函数f但是在实际的程序设计过程中却误将p指针指向了一个基类对象这就导致了一个运行期错误。产生这种运行期的错误原因在于static_cast强制类型转换时并不具有保证类型安全的功能而C提供的dynamic_cast却能解决这一问题dynamic_cast可以在程序运行时检测类型转换是否类型安全。当然dynamic_cast使用起来也是有条件的它要求所转换的操作数必须包含多态类类型即至少包含一个虚函数的类。例2 #includeiostreamusing namespace std;class base{public : void m(){coutmendl;}};class derived : public base{public: void f(){coutfendl;}};int main(){ derived * p; p new base; p dynamic_castderived *(new base); p-m(); p-f(); return 0;} 在本例中利用dynamic_cast进行强制类型转换但是因为base类中并不存在虚函数因此p dynamic_castderived *(new base);这一句会编译错误。dynamic_cast能否正确转换与目标类型是否为多态类类型无关dynamic_cast要求被转换的类型必须为多态类类型。为了解决本例中的语法错误我们可以将base类中的函数m声明为虚函数virtual void m(){coutmendl;}。dynamic_cast还要求内部所描述的目标类型必须为指针或引用。如例3所示如果我们将例2中的主函数换成例3的形式这也是无法通过编译的。例3 int main(){ base b; dynamic_castderived(b); return 0;} 我们来看一下正确使用dynamic_cast的代码。例4 #includeiostream using namespace std;class base { public :virtual void m(){coutmendl;} };class derived : public base { public:void f(){coutfendl;} };int main() {derived * p;p dynamic_castderived *(new base);if(p){p-m();p-f(); }elsecoutConvert not safe!endl;return 0; } 在本例中通过dynamic_cast来初始化指针p在初始化过程中dynamic_cast会检测操作数new base转换为目标类型derived *是否能保证类型安全如果类型安全则将new base结果赋给p指针否则返回0也即false。而本例中是要用基类对象地址去初始化派生类指针这显然是无法保证类型安全的因此p最后得到的返回值是0。在主函数中经过判断语句最终程序输出“Convert not safe!”。Dynamic_cast转换有自己的规则下面将通过示例来介绍转换规则。例4 #includeiostreamusing namespace std;class base{public : virtual void m(){coutmendl;}};class derived : public base{public: virtual void f(){coutfendl;}};int main(){ derived * d; d dynamic_castderived *(new base); if(d) { coutBase to Derived is okendl; delete d; } else coutBase to Derived is errorendl; base * b; b dynamic_castbase *(new derived); if(b) { coutDerived to Base is okendl; delete b; } else coutDerived to Base is errorendl; return 0;} 本例分别定义了两个类base类和derived类这两个类构成继承关系为了测试dynamic_cast转换规则我们在类中各自定义了一个虚函数。在本例的主函数中我们分别测试基类转换为派生类和派生类转换为基类时dynamic_cast转换返回值。本例最终运行结果如下Base to Derived is errorDerived to Base is ok从结果可以看出从不能将指向基类对象的指针转换为指向派生类对象的指针但是可以将指向派生类对象的指针转换为指向基类对象的指针。例5 #includeiostreamusing namespace std;class A{public : virtual void m(){coutmendl;}};class B{public: virtual void f(){coutfendl;}};int main(){ A * a; a dynamic_castA *(new B); if(a) { coutB to A is okendl; delete a; } else coutB to A is errorendl; B * b; b dynamic_castB *(new A); if(b) { coutA to B is okendl; delete b; } else coutA to B is errorendl; return 0;} 在本例中定义了两个类A和B这两个类不构成继承关系我们尝试将指向两个类对象的指针进行互相转换看程序运行结果B to A is errorA to B is error从程序运行结果不难看出任意两个不相关的多态类类型之间的转换也是不能进行的。总结一下dynamic_cast转换规则只允许指向派生类对象的指针转换为指向基类对象的指针。C提供的两个类型转换操作符static_cast和dynamic_caststatic_cast可以用于任何类型的强制类型转换但是它不保证转换过程中的类型安全dynamic_cast只能用于多态类类型的转换而且要求转换的目的类型必须为指针或引用并且它可以保证转换过程中类型安全。
http://wiki.neutronadmin.com/news/331219/

相关文章:

  • 做产品网站多少钱东莞教育网官网
  • 高端网站建设上海济南公共资源交易中心
  • 一个人做网站设计兼职百度最新版app下载安装
  • 网站管理员权限设置权限设置网站开发是分为前端和后端吗
  • 铜陵app网站做招聘信息网站建设合同 协议书
  • 成都网站建设销售落地页模板
  • 广州冼村地铁站几号线系统门窗品牌排行前十名
  • 北京论坛建站模板东莞营销型网站建设费用
  • 上海网站建设公司推建设部网站监理资质换证
  • 济南市城市建设集团网站沈阳祥云男科
  • 网站如何做服务器授权书马鞍山建设工程监督站网站
  • 哪里可以学做网站邢台123信息最新招聘信息
  • 网站怎么做才能将名声打响网址备案号查询
  • 做网站不想用微软雅黑了=> wordpress 翻译 不显示
  • 网站做招聘需要什么资质网站首页浮动窗口代码
  • 松江营销型网站建设怎么给产品做网络推广
  • 国外旅游网站排名网页设计心得体会2000字
  • wordpress网站被黑了龙之向导外贸经理人网站
  • 开网站做销售网址大全你懂的
  • 丰台网站建设推广seo营销推广平台
  • 青岛做网站哪个最好台州做网站最好的
  • 网站设置反爬虫的主要原因深圳公租房
  • 青海网页设计与网站建设wordpress. 登录
  • 中职示范校建设专题网站网站运营一般做那些分析
  • 北京网站制作的公司旅游网站设计报告
  • 怎么选择电商网站建设网页直接玩的传奇
  • 新加坡房产网站大全seo搜索引擎优化工资多少钱
  • 泉州市住房和城乡建设部网站官网模板免费下载
  • 梅河口城乡建设网站sem seo招聘
  • 网站地图xml文件房地产公司网站源码