偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

C++多態(tài)覆蓋相關(guān)問題解疑

開發(fā) 后端
C++多態(tài)覆蓋在實際使用中,需要注意一些細(xì)節(jié)問題,以免在實際程序開發(fā)中產(chǎn)生錯誤。在這篇文章中我們將會為大家纖細(xì)介紹這方面的內(nèi)容。

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

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

 

  1. class Base  
  2. {  
  3. public:  
  4. virtual void print()  
  5. {  
  6. cout<<"Base "<<endl;  
  7. }  
  8. };  
  9. class SubA: public Base  
  10. {  
  11. public:  
  12. void print()  
  13. {  
  14. cout<<"SubA "<<endl;  
  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;//對象  
  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的子類,使用對象的類型被基類覆蓋掉了,而使用指針則沒有問題。

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

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

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

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

責(zé)任編輯:曹凱 來源: 博客園
相關(guān)推薦

2010-02-02 13:20:33

C++對象傳遞

2009-12-31 15:28:02

Silverlight

2010-01-04 13:15:33

跨域引用Silverl

2009-12-07 10:05:22

PHP session

2010-01-20 14:52:21

VB.NET修改數(shù)據(jù)窗

2009-02-04 18:20:42

服務(wù)器虛擬化VMware

2010-01-04 15:27:45

Silverlight

2009-10-22 09:17:16

C++ CLR

2010-01-28 13:15:43

C++參數(shù)

2011-07-15 00:47:13

C++多態(tài)

2010-03-15 17:17:29

Java線程池

2010-02-03 10:50:33

C++多態(tài)

2010-01-21 17:30:12

C++復(fù)雜

2009-12-02 19:14:07

PHP header

2010-02-06 14:54:11

C++指針漂移

2011-04-06 08:57:07

C++java多態(tài)

2009-12-01 15:41:16

PHP substr截

2009-12-08 10:33:23

PHP應(yīng)用問題

2009-08-20 15:54:48

從C#到C++

2025-06-16 03:22:00

點贊
收藏

51CTO技術(shù)棧公眾號