| 订阅 | 在线投稿
分享
 
 
当前位置: 王朝网络 >> c/c++ >> C++ virtual member function FAQ

C++ virtual member function FAQ

2008-06-01 02:25:53 编辑來源:互联网 评论
 
 
 
本文为【C++ virtual member function FAQ】的拼音翻译版
  【1】 xu cheng yuan han shu he fei xu cheng yuan han shu tiao yong fang shi you shen me bu tong ?
   fei xu cheng yuan han shu shi jing tai que ding de 。 ye jiu shi shuo , gai cheng yuan han shu ( zai bian yi shi ) bei jing tai di xuan ze , gai xuan ze ji yu zhi xiang dui xiang de zhi zhen ( huo yin yong ) de lei xing 。 xiang bi er yan , xu cheng yuan han shu shi dong tai que ding de ( zai yun xing shi )。 ye jiu shi shuo , cheng yuan han shu ( zai yun xing shi ) bei dong tai di xuan ze , gai xuan ze ji yu dui xiang de lei xing , er bu shi zhi xiang gai dui xiang de zhi zhen / yin yong de lei xing 。 zhe bei cheng zuo “ dong tai bang ding / dong tai lian bian ”。 da duo shu de bian yi qi shi yong yi xia de yi xie de ji shu , ye jiu shi suo wei de “VTABLE” ji zhi :
   bian yi qi fa xian yi ge lei zhong you bei sheng ming wei virtual de han shu , jiu hui wei qi gao yi ge xu han shu biao , ye jiu shi VTABLE。VTABLE shi ji shang shi yi ge han shu zhi zhen de shu zu , mei ge xu han shu zhan yong zhe ge shu zu de yi ge slot。 yi ge lei zhi you yi ge VTABLE, bu guan ta you duo shao ge shi li 。 pai sheng lei you zi ji de VTABLE, dan shi pai sheng lei de VTABLE yu ji lei de VTABLE you xiang tong de han shu pai lie shun xu , tong ming de xu han shu bei fang zai liang ge shu zu de xiang tong wei zhi shang 。 zai chuang jian lei shi li de shi hou , bian yi qi huan hui zai mei ge shi li de nei cun bu ju zhong zeng jia yi ge vfptr zi duan , gai zi duan zhi xiang ben lei de VTABLE。 tong guo zhe xie shou duan , bian yi qi zai kan dao yi ge xu han shu tiao yong de shi hou , jiu hui jiang zhe ge tiao yong gai xie , zai fen fa yi ge xu han shu shi , yun xing shi xi tong gen sui dui xiang de v-pointer zhao dao lei de v-table, ran hou gen sui v-table zhong shi dang de xiang zhao dao fang fa de dai ma 。
   yi shang ji shu de kong jian kai xiao shi cun zai de : mei ge dui xiang yi ge e wai de zhi zhen ( jin jin dui yu xu yao dong tai bang ding de dui xiang ), jia shang mei ge fang fa yi ge e wai de zhi zhen ( jin jin dui yu xu fang fa )。 shi jian kai xiao ye shi you de : he pu tong han shu tiao yong bi jiao , xu han shu tiao yong xu yao liang ge e wai de bu zhou ( de dao v-pointer de zhi , de dao fang fa de di zhi )。 you yu bian yi qi zai bian yi shi jiu tong guo zhi zhen lei xing jie jue le fei xu han shu de tiao yong , suo yi zhe xie kai xiao bu hui fa sheng zai fei xu han shu shang 。
  【2】 xi gou han shu ye ke yi shi xu de , shen zhi shi chun xu de , dan shi gou zao han shu bu neng shi xu de
   chun xu de xi gou han shu bing mei you shen me zuo yong , shi xu de jiu gou le 。 tong chang zhi you zai xi wang jiang yi ge lei bian cheng chou xiang lei ( bu neng shi li hua de lei ), er zhe ge lei you mei you he shi de han shu ke yi bei chun xu hua de shi hou , ke yi shi yong chun xu de xi gou han shu lai da dao mu de 。 gou zao han shu bu neng shi xu de ( wei shen me ? yin wei zai yi ge gou zao han shu tiao yong qi jian , xu ji zhi bing bu gong zuo ), dan shi ni ke yi ke neng tong guo xu han shu virtual clone()( dui yu kao bei gou zao han shu ) huo xu han shu virtual create()( dui yu mo ren gou zao han shu ), de dao xu gou zao han shu chan sheng de xiao guo 。 ru xia :
  class Shape {
  public:
   virtual ~Shape() { } // xu xi gou han shu
   virtual void draw() = 0; // chun xu han shu
   virtual void move() = 0;
   // ...
   virtual Shape* clone() const = 0; // shi yong kao bei gou zao han shu
   virtual Shape* create() const = 0; // shi yong mo ren gou zao han shu
  };
  class Circle : public Shape {
  public:
   Circle* clone() const { return new Circle(*this); }
   Circle* create() const { return new Circle(); }
   // ...
  };
   zai clone() cheng yuan han shu zhong , dai ma new Circle(*this) tiao yong Circle de kao bei gou zao han shu lai fu zhi this de zhuang tai dao xin chuang jian de Circle dui xiang 。 zai create() cheng yuan han shu zhong , dai ma new Circle() tiao yong Circle de mo ren gou zao han shu 。
  yong hu jiang ta men kan zuo “ xu gou zao han shu ” lai shi yong ta men :
  void userCode(Shape& s)
  {
   Shape* s2 = s.clone();
   Shape* s3 = s.create();
   // ...
   delete s2; // zai ci chu , ni ke neng xu yao xu xi gou han shu
   delete s3;
  }
   zhe ge han shu jiang zheng que gong zuo , er bu guan Shape shi yi ge Circle,Square, huo shi qi ta zhong lei de Shape, shen zhi ta men huan bing bu cun zai 。
  
   【3】 gou zao han shu he xi gou han shu zhong de xu han shu tiao yong
   yi ge lei de xu han shu zai ta zi ji de gou zao han shu he xi gou han shu zhong bei tiao yong de shi hou , ta men jiu bian cheng pu tong han shu le , bu “ xu ” le 。 ye jiu shi shuo bu neng zai gou zao han shu he xi gou han shu zhong rang zi ji “ duo tai ”。 li ru :
  class A
  {
  public:
   A() { foo();} // zai zhe li , wu lun ru he dou shi A::foo() bei tiao yong !
   ~A() { foo();} // tong shang
   virtual void foo();
  };
  class B: public A
  {
  public:
   virtual void foo();
  };
  void bar()
  {
   A * a = new B;
   delete a;
  }
   jia ru ni xi wang delete a de shi hou , hui dao zhi B::foo() bei tiao yong , na me ni jiu cuo le 。 tong yang , zai new B de shi hou ,A de gou zao han shu bei tiao yong , dan shi zai A de gou zao han shu zhong , bei tiao yong de shi A::foo() er bu shi B::foo()。 wei shen me hui you zhe yang de gui ding ne , yuan yin ru xia :
   dang ji lei bei gou zao shi , dui xiang huan bu shi yi ge pai sheng lei de dui xiang , suo yi jia ru Base::Base() tiao yong le xu han shu virt(), ze Base::virt() jiang bei tiao yong , ji shi Derived::virt()( pai sheng lei chong xie gai xu han shu ) cun zai 。
   tong yang , dang ji lei bei xi gou shi , dui xiang yi jing bu zai shi yi ge pai sheng lei dui xiang le , suo yi jia ru Base::~Base() tiao yong le virt(), ze Base::virt() de dao kong zhi quan , er bu shi chong xie de Derived::virt() 。
   dang ni ke yi xiang xiang dao jia ru Derived::virt() she ji dao pai sheng lei de mou ge cheng yuan dui xiang jiang zao cheng de zai nan de shi hou , ni hen kuai jiu neng kan dao zhe zhong fang fa de ming zhi 。 ju ti lai shuo , jia ru Base::Base() tiao yong le xu han shu virt(), zhe ge gui ze shi de Base::virt() bei tiao yong 。 jia ru bu an zhao zhe ge gui ze ,Derived::virt() jiang zai pai sheng dui xiang de pai sheng bu fen bei gou zao zhi qian bei tiao yong , ci shi shu yu pai sheng dui xiang de pai sheng bu fen de mou ge cheng yuan dui xiang huan mei you bei gou zao , er Derived::virt() que neng gou fang wen ta 。 zhe jiang shi zai nan 。
  【4】 si you private de xu han shu shi fou ju you duo tai xing ?
   kao lv xia mian de li zi :
  class A
  {
  public:
   void foo() { bar();}
  private:
   virtual void bar() { ...}
  };
  class B: public A
  {
  private:
   virtual void bar() { ...}
  };
   zai zhe ge li zi zhong , sui ran bar() zai A lei zhong shi private de , dan shi reng ran ke yi chu xian zai pai sheng lei zhong , bing reng ran ke yi yu public huo zhe protected de xu han shu yi yang chan sheng duo tai de xiao guo 。 bing bu hui yin wei ta shi private de , jiu fa sheng A::foo() bu neng fang wen B::bar() de qing kuang , ye bu hui fa sheng B::bar() dui A::bar() de override bu qi zuo yong de qing kuang 。
   zhe zhong xie fa de yu yi shi :A gao su B, ni zui hao override wo de bar() han shu , dan shi ni bu yao guan ta ru he shi yong , ye bu yao zi ji tiao yong zhe ge han shu 。【原文】【汉音对照
 
 
 
 
 
 
 
 
 
日版宠物情人插曲《Winding Road》歌词

日版宠物情人2017的插曲,很带节奏感,日语的,女生唱的。 最后听见是在第8集的时候女主手割伤了,然后男主用嘴帮她吸了一下,插曲就出来了。 歌手:Def...

兄弟共妻,我成了他们夜里的美食

老钟家的两个儿子很特别,就是跟其他的人不太一样,魔一般的执着。兄弟俩都到了要结婚的年龄了,不管自家老爹怎么磨破嘴皮子,兄弟俩说不娶就不娶,老父母为兄弟两操碎了心...

如何磨出破洞牛仔裤?牛仔裤怎么剪破洞?

把牛仔裤磨出有线的破洞 1、具体工具就是磨脚石,下面垫一个硬物,然后用磨脚石一直磨一直磨,到把那块磨薄了,用手撕开就好了。出来的洞啊很自然的。需要猫须的话调几...

我就是扫描下图得到了敬业福和爱国福

先来看下敬业福和爱国福 今年春节,支付宝再次推出了“五福红包”活动,表示要“把欠大家的敬业福都还给大家”。 今天该活动正式启动,和去年一样,需要收集“五福”...

冰箱异味产生的原因和臭味去除的方法

有时候我们打开冰箱就会闻到一股异味,冰箱里的这种异味是因为一些物质发出的气味的混合体,闻起来让人恶心。 产生这些异味的主要原因有以下几点。 1、很多人有这种习...

 
 
【1】 xu cheng yuan han shu he fei xu cheng yuan han shu tiao yong fang shi you shen me bu tong ? fei xu cheng yuan han shu shi jing tai que ding de 。 ye jiu shi shuo , gai cheng yuan han shu ( zai bian yi shi ) bei jing tai di xuan ze , gai xuan ze ji yu zhi xiang dui xiang de zhi zhen ( huo yin yong ) de lei xing 。 xiang bi er yan , xu cheng yuan han shu shi dong tai que ding de ( zai yun xing shi )。 ye jiu shi shuo , cheng yuan han shu ( zai yun xing shi ) bei dong tai di xuan ze , gai xuan ze ji yu dui xiang de lei xing , er bu shi zhi xiang gai dui xiang de zhi zhen / yin yong de lei xing 。 zhe bei cheng zuo “ dong tai bang ding / dong tai lian bian ”。 da duo shu de bian yi qi shi yong yi xia de yi xie de ji shu , ye jiu shi suo wei de “VTABLE” ji zhi : bian yi qi fa xian yi ge lei zhong you bei sheng ming wei virtual de han shu , jiu hui wei qi gao yi ge xu han shu biao , ye jiu shi VTABLE。VTABLE shi ji shang shi yi ge han shu zhi zhen de shu zu , mei ge xu han shu zhan yong zhe ge shu zu de yi ge slot。 yi ge lei zhi you yi ge VTABLE, bu guan ta you duo shao ge shi li 。 pai sheng lei you zi ji de VTABLE, dan shi pai sheng lei de VTABLE yu ji lei de VTABLE you xiang tong de han shu pai lie shun xu , tong ming de xu han shu bei fang zai liang ge shu zu de xiang tong wei zhi shang 。 zai chuang jian lei shi li de shi hou , bian yi qi huan hui zai mei ge shi li de nei cun bu ju zhong zeng jia yi ge vfptr zi duan , gai zi duan zhi xiang ben lei de VTABLE。 tong guo zhe xie shou duan , bian yi qi zai kan dao yi ge xu han shu tiao yong de shi hou , jiu hui jiang zhe ge tiao yong gai xie , zai fen fa yi ge xu han shu shi , yun xing shi xi tong gen sui dui xiang de v-pointer zhao dao lei de v-table, ran hou gen sui v-table zhong shi dang de xiang zhao dao fang fa de dai ma 。 yi shang ji shu de kong jian kai xiao shi cun zai de : mei ge dui xiang yi ge e wai de zhi zhen ( jin jin dui yu xu yao dong tai bang ding de dui xiang ), jia shang mei ge fang fa yi ge e wai de zhi zhen ( jin jin dui yu xu fang fa )。 shi jian kai xiao ye shi you de : he pu tong han shu tiao yong bi jiao , xu han shu tiao yong xu yao liang ge e wai de bu zhou ( de dao v-pointer de zhi , de dao fang fa de di zhi )。 you yu bian yi qi zai bian yi shi jiu tong guo zhi zhen lei xing jie jue le fei xu han shu de tiao yong , suo yi zhe xie kai xiao bu hui fa sheng zai fei xu han shu shang 。 【2】 xi gou han shu ye ke yi shi xu de , shen zhi shi chun xu de , dan shi gou zao han shu bu neng shi xu de chun xu de xi gou han shu bing mei you shen me zuo yong , shi xu de jiu gou le 。 tong chang zhi you zai xi wang jiang yi ge lei bian cheng chou xiang lei ( bu neng shi li hua de lei ), er zhe ge lei you mei you he shi de han shu ke yi bei chun xu hua de shi hou , ke yi shi yong chun xu de xi gou han shu lai da dao mu de 。 gou zao han shu bu neng shi xu de ( wei shen me ? yin wei zai yi ge gou zao han shu tiao yong qi jian , xu ji zhi bing bu gong zuo ), dan shi ni ke yi ke neng tong guo xu han shu virtual clone()( dui yu kao bei gou zao han shu ) huo xu han shu virtual create()( dui yu mo ren gou zao han shu ), de dao xu gou zao han shu chan sheng de xiao guo 。 ru xia : class Shape { public: virtual ~Shape() { } // xu xi gou han shu virtual void draw() = 0; // chun xu han shu virtual void move() = 0; // ... virtual Shape* clone() const = 0; // shi yong kao bei gou zao han shu virtual Shape* create() const = 0; // shi yong mo ren gou zao han shu }; class Circle : public Shape { public: Circle* clone() const { return new Circle(*this); } Circle* create() const { return new Circle(); } // ... }; zai clone() cheng yuan han shu zhong , dai ma new Circle(*this) tiao yong Circle de kao bei gou zao han shu lai fu zhi this de zhuang tai dao xin chuang jian de Circle dui xiang 。 zai create() cheng yuan han shu zhong , dai ma new Circle() tiao yong Circle de mo ren gou zao han shu 。 yong hu jiang ta men kan zuo “ xu gou zao han shu ” lai shi yong ta men : void userCode(Shape& s) { Shape* s2 = s.clone(); Shape* s3 = s.create(); // ... delete s2; // zai ci chu , ni ke neng xu yao xu xi gou han shu delete s3; } zhe ge han shu jiang zheng que gong zuo , er bu guan Shape shi yi ge Circle,Square, huo shi qi ta zhong lei de Shape, shen zhi ta men huan bing bu cun zai 。 【3】 gou zao han shu he xi gou han shu zhong de xu han shu tiao yong yi ge lei de xu han shu zai ta zi ji de gou zao han shu he xi gou han shu zhong bei tiao yong de shi hou , ta men jiu bian cheng pu tong han shu le , bu “ xu ” le 。 ye jiu shi shuo bu neng zai gou zao han shu he xi gou han shu zhong rang zi ji “ duo tai ”。 li ru : class A { public: A() { foo();} // zai zhe li , wu lun ru he dou shi A::foo() bei tiao yong ! ~A() { foo();} // tong shang virtual void foo(); }; class B: public A { public: virtual void foo(); }; void bar() { A * a = new B; delete a; } jia ru ni xi wang delete a de shi hou , hui dao zhi B::foo() bei tiao yong , na me ni jiu cuo le 。 tong yang , zai new B de shi hou ,A de gou zao han shu bei tiao yong , dan shi zai A de gou zao han shu zhong , bei tiao yong de shi A::foo() er bu shi B::foo()。 wei shen me hui you zhe yang de gui ding ne , yuan yin ru xia : dang ji lei bei gou zao shi , dui xiang huan bu shi yi ge pai sheng lei de dui xiang , suo yi jia ru Base::Base() tiao yong le xu han shu virt(), ze Base::virt() jiang bei tiao yong , ji shi Derived::virt()( pai sheng lei chong xie gai xu han shu ) cun zai 。 tong yang , dang ji lei bei xi gou shi , dui xiang yi jing bu zai shi yi ge pai sheng lei dui xiang le , suo yi jia ru Base::~Base() tiao yong le virt(), ze Base::virt() de dao kong zhi quan , er bu shi chong xie de Derived::virt() 。 dang ni ke yi xiang xiang dao jia ru Derived::virt() she ji dao pai sheng lei de mou ge cheng yuan dui xiang jiang zao cheng de zai nan de shi hou , ni hen kuai jiu neng kan dao zhe zhong fang fa de ming zhi 。 ju ti lai shuo , jia ru Base::Base() tiao yong le xu han shu virt(), zhe ge gui ze shi de Base::virt() bei tiao yong 。 jia ru bu an zhao zhe ge gui ze ,Derived::virt() jiang zai pai sheng dui xiang de pai sheng bu fen bei gou zao zhi qian bei tiao yong , ci shi shu yu pai sheng dui xiang de pai sheng bu fen de mou ge cheng yuan dui xiang huan mei you bei gou zao , er Derived::virt() que neng gou fang wen ta 。 zhe jiang shi zai nan 。 【4】 si you private de xu han shu shi fou ju you duo tai xing ? kao lv xia mian de li zi : class A { public: void foo() { bar();} private: virtual void bar() { ...} }; class B: public A { private: virtual void bar() { ...} }; zai zhe ge li zi zhong , sui ran bar() zai A lei zhong shi private de , dan shi reng ran ke yi chu xian zai pai sheng lei zhong , bing reng ran ke yi yu public huo zhe protected de xu han shu yi yang chan sheng duo tai de xiao guo 。 bing bu hui yin wei ta shi private de , jiu fa sheng A::foo() bu neng fang wen B::bar() de qing kuang , ye bu hui fa sheng B::bar() dui A::bar() de override bu qi zuo yong de qing kuang 。 zhe zhong xie fa de yu yi shi :A gao su B, ni zui hao override wo de bar() han shu , dan shi ni bu yao guan ta ru he shi yong , ye bu yao zi ji tiao yong zhe ge han shu 。
󰈣󰈤
  免责声明:本文仅代表作者个人观点,与王朝网络无关。王朝网络登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
赏心悦目的模特儿(9)
赏心悦目的模特儿(8)
赏心悦目的模特儿(7)
赏心悦目的模特儿(6)
周六一日游--绿野翠蜂场(一)
骆驼峰
下一站上环
杂乱的几张Danang
 
>>返回首页<<
 
 
 为你推荐
 
 
 
 转载本文
 UBB代码 HTML代码
复制到剪贴板...
 
 热帖排行
 
 
 
 
 
©2005- 王朝网络 版权所有