C Primer 第十四章 下標運算子

2021-10-02 09:56:04 字數 1182 閱讀 6828

表示容器的類通常可以通過元素在容器中的位置訪問元素,這些類一般會定義下標運算子operator。

下標運算子必須是成員函式

為了與下標的原始定義相容,下標運算子通常以訪問元素的引用作為返回值,這樣的好處是下標可以出現在賦值運算子的任意一端。進一步,我們最好同時定義下標運算子的常量版本和非常量版本,當作用於乙個常量物件時,下標運算子返回常量引用以確保我們不會給返回的物件賦值。

如果乙個類包含下標運算子,則它通常會定義兩個版本:乙個返回普通引用,另乙個是類的常量成員並返回常量的引用。

class

strvec

const string&

operator

(size_t n)

const

private

: string* elements;

//指向陣列首元素的指標

};

當strvec是非常量時,可以給元素賦值,當對常量物件取下標時,不能為其賦值:

//假設svec是乙個strvec物件

const strvec cvec = svec;

//把svec的元素拷貝到cvec中

//如果svec中含有元素,對第乙個元素執行string的empty函式

if(svec.

size()

&& svec[0]

.empty()

)

為你的strblob類、strblobptr類、strvec類和string類定義下標運算子

class

strblob

const string&

operator

(size_t n)

const};

class

strblobptr

const string&

operator

(size_t n)

const};

class

string

const

char

&operator

(size_t n)

const

private

:char

* str;

};

C Primer 第十四章 賦值運算子

賦值運算子 賦值運算子可以把類的乙個物件賦值給該類的另乙個物件。此時,類還可以定義其它賦值運算子以使用別的型別作為右側運算物件。在拷貝賦值和移動賦值之外,標準庫vector類還定義了第三種賦值運算子,該運算子接受花括號內的元素列表作為引數。我們能以如下的形式使用該運算子 vector v v 同樣,...

第十四章約束

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

第十四章 約束

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