1. 程式人生 > >C++ primer讀書筆記 7.4 類的作用域

C++ primer讀書筆記 7.4 類的作用域

一個類就是一個作用域,在類的外部,成員的名字被隱藏起來了

在類的外部定義成員函式時, 要加上類名和作用域運算子

而一旦遇到了類名,定義的剩餘部分在就在類的作用域之內了。包含引數列表和函式體

另一方面,函式的返回型別通常出現在函式名之前,因此如果返回類型別,需要明確指出哪個類定義了該型別,即為返回的類型別新增類名和作用域運算子

名字查詢與類的作用域

編譯器處理完類中的全部聲明後才會處理成員函式的定義,即類的定義分兩步處理:

  • 編譯成員的宣告
  • 直到類全部可見後才編譯函式體

因此在函式體中可以隨意使用類的成員。但是在宣告中使用的名字都必須確保在使用前可見,包括返回型別和引數列表中的名字

型別名不可重定義

在類中,如果成員使用了外層作用域中的某個名字,而該名字代表一種型別,則類不能在之後 重新定義該名字

typedef double Money;  

class Account  
{  
public:  
    Money balance(){}  
private:  
    typedef double Money;  
};

第二處定義是錯誤的!

成員函式函式體中名字的查詢

  • 先在函式體中查詢
  • 再在類內的宣告中查詢
  • 在成員函式定義之前的作用域內繼續查詢

具體參考書上的例子

  • this->height
  • ::height