溫馨提示×

溫馨提示×

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

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

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

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

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

重載賦值運算符

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

void operator = (const Date&)

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

#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類加入了一個重載運算符函數(shù),這個程序和上面的一個程序是相同的。賦值運算符函數(shù)首先取得所需的數(shù)據(jù),然后用delete把原來的month指針所占用的內(nèi)存返還給堆。接著,如果源對象的month指針已經(jīng)初始化過,就用new運算符為對象重新分配內(nèi)存,并把源對象的month字符串拷貝給接受方。

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

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

向AI問一下細節(jié)

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

c++
AI