C primer難點之類

2021-06-20 19:33:09 字數 1447 閱讀 5647

類的難點解析:

類三大特性:繼承,多型,封裝

訪問許可權控制:public  private protect

inline成員函式:1 在類內部定義的成員函式,將自動被作為inline處理

2 如果是顯示宣告inline 即不放在類定義體內,該函式定義應該放在.hl檔案裡,因為它對於使用它的,cpp檔案要可見,僅僅宣告是不夠的。

3  inline關鍵字的指定既可以在類裡面宣告時指定也可以在類外面定義指定。

4 定義lnline函式有3中方法。

不完全型別:如果該類是不完全的,則其資料成員只能是指向此類的指標或引用。

class note

;程式設計常見例題:定義兩個類 x和y,x中有乙個指向y的指標,y中有乙個x型別的物件。

class y; class xclass y

this指標:百年避不開的話題 :何時需要用到this呢?

當我們需要將乙個物件作為整體引用時:就需要

screen& screen::move(int x)

return *this;

這樣之後可以通過move函式獲取物件其他的成員:obj.move().move();

const函式:const物件只能使用const成員 ,給予const關於指標和引用可以過載。

const成員函式等價於constthis   常量成員函式

類的作用域:

l  函式的返回型別不一定在類的作用域中

詳情看c++primer

第四版p381

類作用域的名字查詢順序:1 先檢查成員函式區域性作用域中的宣告:注意函式引數的宣告

2檢查所有類成員的宣告

3檢查此成員函式定義前的作用域  例如全域性變數

如果函式中的成員變數被引數遮蔽,可以通過this等手段引用

建構函式:1建構函式: 由於常量建構函式的緣故所以不需要const建構函式。

2初始化列表:初始化順序是以類中宣告的為主。

3不帶引數的建構函式與只有乙個引數的建構函式(但是有預設實參)導致預設建構函式有歧義

static類成員:不是類物件的組成部分

static成員函式:不能宣告為const也不能宣告為虛函式,沒有this指標。

static資料成員:必須在定義體的外部定義並且初始化,且關鍵字static只能在類中宣告,但是有乙個例外const static 資料成員可以在類的定義體中初始化,但是其任然需要在類的定義體外面定義但是此時可以不提供初始值,另外static資料成員可以做預設實參。

個人意見,有不對的地方歡迎指出

c Primer中文4版 習題難點解釋

1 習題9.35 使用迭代器尋找和刪除string物件中所有的大寫字元 分析 主要考慮首字母是否為大寫字母。否則會出現不可預知的中段錯誤 原錯誤 string str my name is wangpeiyong hello world string iterator iter str.begin ...

c primer 學習筆記 類之類的宣告和定義

封裝是一項低層次的元素組合起來的形成新的 高層次實體珠技術。函式是封裝的一種形式 函式所執行的細節行為被封裝在函式本身這個更大的實體中。被封裝的元素隱藏了它們的實現細節 可以呼叫乙個函式但不能訪問它所執行的語句。同樣地,類也是乙個封裝的實體 它代表若干成員的聚焦,大多數 良好設計的 類型別隱藏了實現...

C primer學習之型別轉換 1 隱式轉換

先來看下面這條表示式,它的目的是將ival初始化為6 int ival 3.541 3 編譯器可能會警告該運算損失了精度加法的兩個運算物件型別不同,3.541的型別是double,3的型別是int。c 語言不會直接將兩個不同型別的相加,而是根據型別轉換規則設法將運算物件的型別統一後再求值。上述的型別...