《C++ Primer》讀書筆記-第七章 04 類的作用域
01-28
聲明:
n
- 文中內容收集整理自《C++ Primer 中文版 (第5版)》,版權歸原書所有。
- 原書有更加詳細、精彩的釋義,請大家購買正版書籍進行學習。
- 本文僅作學習交流使用,禁止任何形式的轉載
n
n
n
一個類就是一個作用域,在類的外部,成員的名字被隱藏起來了
n在類的外部定義成員函數時, 要加上類名和作用域運算符
n而一旦遇到了類名,定義的剩餘部分在就在類的作用域之內了。包含參數列表和函數體
n
另一方面,函數的返回類型通常出現在函數名之前,因此如果返回類類型,需要明確指出哪個類定義了該類型,即為返回的類類型添加類名和作用域運算符
n名字查找與類的作用域
n
編譯器處理完類中的全部聲明後才會處理成員函數的定義,即類的定義分兩步處理:
n- 編譯成員的聲明
- 直到類全部可見後才編譯函數體
n
n
因此在函數體中可以隨意使用類的成員。但是在聲明中使用的名字都必須確保在使用前可見,包括返回類型和參數列表中的名字
n類型名不可重定義
n
在類中,如果成員使用了外層作用域中的某個名字,而該名字代表一種類型,則類不能在之後 重新定義該名字
n
typedef double Money; nnclass Account n{ npublic: n Money balance(){} nprivate: n typedef double Money; n};n
n
第二處定義是錯誤的!
n成員函數函數體中名字的查找
n
- 先在函數體中查找
- 再在類內的聲明中查找
- 在成員函數定義之前的作用域內繼續查找
n
n
n
具體參考書上的例子
n- this->height
::height
nheight
n
n
n
n
本文僅發佈於:
n
微信公眾號:馬志峰的編程筆記
知乎專欄:馬志峰的編程筆記 - 知乎專欄
推薦閱讀:
※我的CUDA學習之旅2——圖像形態學腐蝕、膨脹CUDA實現
※【源碼眾讀】之問題解答,cpp_Part_3
※C++實現神經網路之四—神經網路的預測和輸入輸出的解析
※《C++ Primer》讀書筆記-第十一章 03 關聯容器操作
※當刷題遇見吐槽和涼席椅墊,完美!
TAG:C |
