天天看點

C++ Primer 5th筆記(7)chapter7 類:編譯相關

1. 編譯步驟:

step1 首先編譯類的成員

step2 再是類的成員函數

2. 類的前向聲明forward declaration

在建立一個類的對象之前該類必須被定義過(編譯器才知道這個對象需要多少存儲空間)

3. 友元關系不存在傳遞性

就算在類的内部定義友元函數,在類外還得再聲明一次

struct X {
 friend void f() {}
}

voidd X::g()(return f()//error
void f();//先聲明
voidd X::g2()(return f()//再才是可以的
           

4. 編譯器處理完所有類的全部聲明後再處理成員函數的定義

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

typedef double Money;
class Account{
  Money f();
 typedef double Money;//error
}

           

6. 類作用域後,在外圍的作用域中查找

void  S::f(){
  int i = ::w;//::w指全局的那個
}
           

7. 類内部也可以隐藏外層的

int h;
class s{
 int h;//隐藏外層的
}