把 Essencial C 讀薄(二)

2021-08-02 02:42:30 字數 1975 閱讀 4102

1. big three

big three是指當類中有指標物件時,class除了建構函式constructor之外還要提供copy constructor, copy operator, destructor,以矩陣類為例:

class matrix

matrix(const matrix& rhs);

matrix& operator= (const matrix& rhs);

~matrix()

private:

int _row, _col;

double* _pmat;

}matrix::matrix(const matrix& rhs):_row(rhs._row), _col(rhs._col)

matrix& matrix::operator= (const matrix &rhs)

//this指標指向呼叫者,如a = b,a就是"="的呼叫者,this指向a

return *this;

}

2. mutable和const

如果某個引數是const reference引數,class設計者必須在memble function身上標註const,以此告訴編譯器:這個member function是不會更改class object的內容。const修飾符緊接於函式引數列表之後,凡是在class主體以外定義者,如果是乙個const member function,那就必須同時在宣告與定義中指定const。

class matrix

int matrix::row() const

3. 合作關係必須建立在友誼的基礎上

在函式原型或類前加上friend關鍵字,就可以把它宣告為某個class的友元,這份宣告可以出現在class的任意位置,不受private和public的硬性,成為了friend,就具備了和class member function相同的訪問許可權。

template

class binarytree;//前置宣告

template

class btnode

4. fuction-like classes

fuction-like classes指仿函式,也可以叫函式物件function object。標準庫中定義了很多仿函式,其實它們都是乙個類,但是都過載了operator(),使這個類變的很像函式。通常我們會把function object當作引數傳給泛型演算法。

include #include 

#include

using

namespace

std;

//這個類用來測試傳入值是否小於某指定值

class less_than

int comp_val() const

void comp_val(int nval)

bool

operator() (int _value) const;

private:

int _val;

};inline

bool less_than::operator() (int _value) const

void count_less_than(vector

& vec, int comp, ostream& os = cout)

}int main()

; vector

vec(ia, ia + 6);

int comp_val = 6;

cout

<< "number of elements less than "

<< comp_val << " are"

<< endl;

count_less_than(vec, comp_val);

system("pause");

return

0;}

把書看薄,再看厚

一直以來有許多讀者問我 你的書都那麼厚一本,看起來真費勁,那麼多內容,好像都是重點,看完後卻記不住多少,該怎麼辦?怎樣的看書方法效果會更好?這的確是事實,在我的 網管員必讀 包括第一版和第 2版 和 網路工程師必讀 兩大系列中每本都是厚厚的一大本,少則 500來頁,多則 700來頁。第一版 網管員必...

把書看薄,再看厚

一直以來有許多讀者問我 你的書都那麼厚一本,看起來真費勁,那麼多內容,好像都是重點,看完後卻記不住多少,該怎麼辦?怎樣的看書方法效果會更好?這的確是事實,在我的 網管員必讀 包括第一版和第 2版 和 網路工程師必讀 兩大系列中每本都是厚厚的一大本,少則 500來頁,多則 700來頁。第一版 網管員必...

把書看薄,再看厚

一直以來有許多讀者問我 你的書都那麼厚一本,看起來真費勁,那麼多內容,好像都是重點,看完後卻記不住多少,該怎麼辦?怎樣的看書方法效果會更好?這的確是事實,在我的 網管員必讀 包括第一版和第 2版 和 網路工程師必讀 兩大系列中每本都是厚厚的一大本,少則 500來頁,多則 700來頁。第一版 網管員必...