91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

奉贤区| 光山县| 突泉县| 托里县| 西乌珠穆沁旗| 固安县| 清水河县| 苗栗县| 原阳县| 菏泽市| 扶余县| 根河市| 阳谷县| 绥德县| 平定县| 崇义县| 汕头市| 兰州市| 沂水县| 镇远县| 天气| 舒城县| 鄢陵县| 隆安县| 通海县| 柞水县| 定安县| 阳原县| 正安县| 嘉禾县| 新野县| 明溪县| 大厂| 济宁市| 响水县| 米泉市| 兴仁县| 岱山县| 宁南县| 阜平县| 淮滨县|