亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中怎么重載賦值運算符

發布時間:2021-07-06 17:30:09 來源:億速云 閱讀:128 作者:Leah 欄目:編程語言

這篇文章給大家介紹C++中怎么重載賦值運算符,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

重載賦值運算符

在類中重載賦值運算符的格式如下:

void operator = (const Date&)

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

#include \"iostream.h\"  #include \"string.h\"  class Date  {  int mo,da,yr;  char *month;  public:  Date(int m=0, int d=0, int y=0);  ~Date();  void operator=(const Date&);  void display() const;  };   Date::Date(int m, int d, int y)  {  static char *mos[] =  {  \"January\",\"February\",\"March\",\"April\",\"May\",\"June\",  \"July\",\"August\",\"September\",\"October\",\"November\",\"December\" };  mo = m; da = d; yr = y;  if (m != 0)  {  month = new char[strlen(mos[m-1])+1];  strcpy(month, mos[m-1]);  }  else month = 0;  }   Date::~Date()  {  delete [] month;  }  void Date::display() const {  if (month!=0) cout<<month<<\' \'<<da<<\",\"<<yr<<endl;  }  void Date::operator=(const Date& dt)  {  if (this != &dt)   {  mo = dt.mo;  da = dt.da;  yr = dt.yr;  delete [] month;  if (dt.month != 0)  {  month = new char [std::strlen(dt.month)+1];  std::strcpy(month, dt.month);  }  else month = 0;  }  }  int main()  {  Date birthday(8,11,1979);  birthday.display();  Date newday(12,29,2003);  newday.display();  newday = birthday;  newday.display();  return 0;  }

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

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

關于C++中怎么重載賦值運算符就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

利辛县| 辽宁省| 中西区| 醴陵市| 资源县| 佛山市| 金华市| 乐至县| 辉县市| 陇西县| 龙游县| 武冈市| 洛隆县| 北安市| 临海市| 潜山县| 嘉峪关市| 宁河县| 通辽市| 泗洪县| 获嘉县| 德州市| 英德市| 遂川县| 吕梁市| 西藏| 鄂托克前旗| 辽源市| 辽宁省| 广德县| 额济纳旗| 山阳县| 湖南省| 贵定县| 岳池县| 冀州市| 宜川县| 株洲市| 贵阳市| 大连市| 永兴县|