日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
C++多態(tài)覆蓋相關(guān)問(wèn)題解疑

C++編程語(yǔ)言中的多態(tài)性是一個(gè)比較重要的概念,在實(shí)際應(yīng)用中有許多比較重要的細(xì)節(jié)問(wèn)題值得我們?nèi)リP(guān)注。在這里就先來(lái)了解一下C++多態(tài)覆蓋的一些問(wèn)題,讓大家從中對(duì)這方面的知識(shí)有一個(gè)更加深入的了解。

為了解決C++多態(tài)覆蓋,需要盡可能的使用指針,而不是對(duì)象。C++在處理兩者的時(shí)候是不一致的。在進(jìn)行函數(shù)傳遞時(shí),基類有可能將繼承類的類型給掩蓋掉,從而喪失了多態(tài)。

 
 
 
  1. class Base  
  2. {  
  3. public:  
  4. virtual void print()  
  5. {  
  6. cout<<"Base "<
  7. }  
  8. };  
  9. class SubA: public Base  
  10. {  
  11. public:  
  12. void print()  
  13. {  
  14. cout<<"SubA "<
  15. }  
  16. };  
  17. class SubB: public Base  
  18. {  
  19. public:  
  20. void print()  
  21. {  
  22. cout<<"SubB\n";  
  23. }  
  24. };  
  25. class Super  
  26. {  
  27. private:  
  28. Base a1;//對(duì)象  
  29. Base *a2;//指針  
  30. public:  
  31. Super(Base &a,Base *b)  
  32. {  
  33. aa1 = a;  
  34. a2 = b;  
  35. }  
  36. void print1()  
  37. {  
  38. a1.print();  
  39. }  
  40. void print2()  
  41. {  
  42. a2->print();  
  43. }  
  44. };  
  45. int main()  
  46. {  
  47. Base b;  
  48. SubA sa;  
  49. SubB sb;  
  50. Super s1(b,&b);  
  51. s1.print1();  
  52. s1.print2();  
  53. Super s2(sa,&sb);  
  54. s2.print1();  
  55. s2.print2();  

#t#上面結(jié)果可以看出

同是Base的子類,使用對(duì)象的類型被基類覆蓋掉了,而使用指針則沒(méi)有問(wèn)題。

我認(rèn)為是Super構(gòu)造時(shí),類的賦值造成的。

賦值和復(fù)制構(gòu)造函數(shù),經(jīng)常會(huì)產(chǎn)生一些意想不到的副效應(yīng),而指針則不會(huì)。

在使用STL容器時(shí),也盡量使用指針存放,除非是只對(duì)值感興趣。

以上就是對(duì)C++多態(tài)覆蓋的相關(guān)介紹。


網(wǎng)頁(yè)題目:C++多態(tài)覆蓋相關(guān)問(wèn)題解疑
文章鏈接:http://www.5511xx.com/article/dhjdoes.html