C++ primer讀書筆記 7.4 類的作用域
阿新 • • 發佈:2018-12-08
一個類就是一個作用域,在類的外部,成員的名字被隱藏起來了
在類的外部定義成員函式時, 要加上類名和作用域運算子
而一旦遇到了類名,定義的剩餘部分在就在類的作用域之內了。包含引數列表和函式體
另一方面,函式的返回型別通常出現在函式名之前,因此如果返回類型別,需要明確指出哪個類定義了該型別,即為返回的類型別新增類名和作用域運算子
名字查詢與類的作用域
編譯器處理完類中的全部聲明後才會處理成員函式的定義,即類的定義分兩步處理:
- 編譯成員的宣告
- 直到類全部可見後才編譯函式體
因此在函式體中可以隨意使用類的成員。但是在宣告中使用的名字都必須確保在使用前可見,包括返回型別和引數列表中的名字
型別名不可重定義
在類中,如果成員使用了外層作用域中的某個名字,而該名字代表一種型別,則類不能在之後 重新定義該名字
typedef double Money;
class Account
{
public:
Money balance(){}
private:
typedef double Money;
};
第二處定義是錯誤的!
成員函式函式體中名字的查詢
- 先在函式體中查詢
- 再在類內的宣告中查詢
- 在成員函式定義之前的作用域內繼續查詢
具體參考書上的例子
- this->height
-
::height