成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C++基礎之重載賦值運算符

開發 后端
本文介紹的是C++中的重載運算符,希望對你有幫助,一起來看。

重載賦值運算符

為了解決上面的問題,我們應該寫一個特殊的賦值運算符函數來處理這類問題。當需要為同一個類的兩個對象相互賦值時,就可以重載運算符函數。這個方法可以解決類的賦值和指針的釋放。

下面的程序中,類中的賦值函數用new運算符從堆中分配了一個不同的指針,該指針獲取賦值對象中相應的值,然后拷貝給接受賦值的對象。
在類中重載賦值運算符的格式如下:

  1. void operator = (const Date&) 

后面我們回加以改進。目前,重載的運算符函數的返回類型為void。它是類總的成員函數,在本程序紅,是Date類的成員函數。它的函數名始終是operator =,參數也始終是同一個類的對象的引用。參數表示的是源對象,即賦值數據的提供者。重載函數的運算符作為目標對象的成員函數來使用。

 

  1. #include \"iostream.h\"  
  2. #include \"string.h\"  
  3. class Date  
  4. {  
  5. int mo,da,yr;  
  6. char *month;  
  7. public:  
  8. Date(int m=0, int d=0, int y=0);  
  9. ~Date();  
  10. void operator=(const Date&);  
  11. void display() const;  
  12. };  
  13.  
  14. Date::Date(int m, int d, int y)  
  15. {  
  16. static char *mos[] =  
  17. {  
  18. \"January\",\"February\",\"March\",\"April\",\"May\",\"June\",  
  19. \"July\",\"August\",\"September\",\"October\",\"November\",\"December\" 
  20. };  
  21. mo = m; da = d; yr = y;  
  22. if (m != 0)  
  23. {  
  24. month = new char[strlen(mos[m-1])+1];  
  25. strcpy(month, mos[m-1]);  
  26. }  
  27. else month = 0;  
  28. }   
  29. Date::~Date()  
  30. {  
  31. delete [] month;  
  32. }  
  33. void Date::display() const 
  34. {  
  35. if (month!=0) cout<<month<<\' \'<<da<<\",\"<<yr<<endl;  
  36. }  
  37. void Date::operator=(const Date& dt)  
  38. {  
  39. if (this != &dt)   
  40. {  
  41. mo = dt.mo;  
  42. da = dt.da;  
  43. yr = dt.yr;  
  44. delete [] month;  
  45. if (dt.month != 0)  
  46. {  
  47. month = new char [std::strlen(dt.month)+1];  
  48. std::strcpy(month, dt.month);  
  49. }  
  50. else month = 0;  
  51. }  
  52. }  
  53. int main()  
  54. {  
  55. Date birthday(8,11,1979);  
  56. birthday.display();  
  57. Date newday(12,29,2003);  
  58. newday.display();  
  59. newday = birthday;  
  60. newday.display();  
  61. return 0;  

 

除了為Date類加入了一個重載運算符函數,這個程序和上面的一個程序是相同的。賦值運算符函數首先取得所需的數據,然后用delete把原來的month指針所占用的內存返還給堆。接著,如果源對象的month指針已經初始化過,就用new運算符為對象重新分配內存,并把源對象的month字符串拷貝給接受方。

重載的Date類賦值運算符函數的***個語句比較了源對象的地址和this指針。這個操作取保對象不會自己給自己賦值。

希望通過以上內容對重載運算的介紹,希望能夠給你帶來幫助。

責任編輯:于鐵 來源: 互聯網
相關推薦

2011-07-15 10:08:11

C++運算符重載

2009-08-12 15:02:49

C#賦值運算符簡單賦值運算符

2009-08-12 15:20:18

C#賦值運算符復合賦值運算符

2020-09-30 14:04:25

C++運算符重載

2009-08-12 10:47:03

C#運算符重載

2024-01-26 16:37:47

C++運算符開發

2009-09-04 13:18:10

C#允許運算符重載

2009-08-12 10:27:12

C#運算符重載運算符重載實例

2009-08-12 10:56:47

C#運算符重載C#運算符重載實例

2009-08-14 10:16:57

C#運算符重載

2009-08-11 15:51:08

C#運算符算術運算符

2020-08-10 10:20:15

流插入運算符語言

2021-12-15 10:25:57

C++運算符重載

2009-08-12 12:46:11

C#運算符重載

2025-02-24 11:16:20

2009-08-12 10:37:13

C#運算符重載

2021-12-16 10:40:11

C++運算符重載

2010-03-26 12:54:27

Python嵌入C++

2009-08-12 11:20:51

C#運算符重載

2022-09-19 08:10:37

運算符函數語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久国产精品 | 99在线资源 | 日韩欧美二区 | 色综合欧美 | 欧美日韩黄 | pacopacomama在线 | 久久av网 | 国产在线精品一区二区 | japan21xxxxhd美女 日本欧美国产在线 | 亚洲精彩免费视频 | 日批的视频 | 亚洲人成人一区二区在线观看 | 一区精品视频 | 福利网址| h片在线观看网站 | 91国产在线播放 | 成人在线免费观看视频 | 国产99久久| 日韩精品成人 | 男女激情网| 亚洲色在线视频 | av黄色国产| 日韩中文字幕在线观看 | 免费黄色a视频 | 成人精品视频在线观看 | 国产一区久久久 | 亚洲精品久久久久久一区二区 | 性做久久久久久免费观看欧美 | 懂色av色香蕉一区二区蜜桃 | www.狠狠操| 激情国产 | 中文字幕国产视频 | 久久久国产一区二区三区 | 成人在线欧美 | 免费国产一区 | av 一区二区三区 | 国产精品久久久久一区二区三区 | 亚洲欧美成人在线 | 日韩欧美操 | 蜜桃日韩| 欧美日韩国产精品激情在线播放 |