類的難點解析:
類三大特性:繼承,多型,封裝
訪問許可權控制: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 語言不會直接將兩個不同型別的相加,而是根據型別轉換規則設法將運算物件的型別統一後再求值。上述的型別...