標籤:

《C++ Primer》讀書筆記-第七章 04 類的作用域

聲明:

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
  • n

  • ::height

    n
  • n

  • height

    n
  • n

本文僅發佈於:

n

微信公眾號:馬志峰的編程筆記

知乎專欄:馬志峰的編程筆記 - 知乎專欄

推薦閱讀:

我的CUDA學習之旅2——圖像形態學腐蝕、膨脹CUDA實現
【源碼眾讀】之問題解答,cpp_Part_3
C++實現神經網路之四—神經網路的預測和輸入輸出的解析
《C++ Primer》讀書筆記-第十一章 03 關聯容器操作
當刷題遇見吐槽和涼席椅墊,完美!

TAG:C |