C Primer 第十四章 賦值運算子

2021-10-02 09:53:58 字數 1044 閱讀 3368

賦值運算子

賦值運算子可以把類的乙個物件賦值給該類的另乙個物件。此時,類還可以定義其它賦值運算子以使用別的型別作為右側運算物件。

在拷貝賦值和移動賦值之外,標準庫vector類還定義了第三種賦值運算子,該運算子接受花括號內的元素列表作為引數。我們能以如下的形式使用該運算子:

vector v;

v =;

同樣,也可以把這個運算子新增到strvec類中

class

strvec

;strvec& strvec::

operator

=(initializer_list il)

和拷貝賦值以及移動賦值運算子一樣,其他過載的賦值運算子也必須先釋放當前記憶體空間,再建立一片新空間。不同之處是,這個運算子無需檢查物件向自身的賦值,這是因為它的形參initializer_list確保il與this所指的不是乙個物件。

我們可以過載賦值運算子。不論形參的型別是什麼,賦值運算子都必須定義為成員函式。

復合賦值運算子

一般也定義在類的內部,為了與內建型別的復合賦值保持一致,類中的復合賦值運算子也要返回其左側運算物件的引用。

sales_data& sales_data::

operator+=

(const sales_data& rhs)

為你的sales_data類定義加法和復合賦值運算子

class

sales_data

;sales_data operator+(

const sales_data& lhs,

const sales_data& rhs)

sales_data& sales_data::

operator+=

(const sales_data& rhs)

C Primer 第十四章 下標運算子

表示容器的類通常可以通過元素在容器中的位置訪問元素,這些類一般會定義下標運算子operator。下標運算子必須是成員函式 為了與下標的原始定義相容,下標運算子通常以訪問元素的引用作為返回值,這樣的好處是下標可以出現在賦值運算子的任意一端。進一步,我們最好同時定義下標運算子的常量版本和非常量版本,當作...

第十四章約束

約束 constraint 是一種保證資料完整性的規則。約束設定在單個字段或者多個字段組合上,寫入這些欄位的行資料必須要符合約束的規則 約束的五種型別 not null 非空約束,指定某列的所有行資料不能包含空值 unique 唯一性約束,指定列或者列的組合的所有行資料必須唯一 primary ke...

第十四章 約束

第十四章 約束 練習1 1.學校有乙個選課系統,其中包括如下關係模式 系 系編號 主鍵,系名稱 唯一鍵,系主任 非空約束,系所在校去 取值範圍只能在南湖校區和渾南校區 create table xi xi no varchar2 10 primary key,xi name varchar2 10 ...