2011年6月30日 星期四

C++ warm up

1. private/protected/public
Protected 的成員可被後代存取, private不行

2. friend
朋友可以存取朋友的所有member

3. virtual function (有點類似interface??)
若為virtual function, 在base型別被呼叫時, 搜尋順序為 derived > based
若非virtual function, 在base型別被呼叫時, 只會搜尋based.
若非virtual function, 在derived型別被呼叫時, 搜尋順序為 derived > based

4. virtual inheritance
多重繼承發生時, 若有相同的基底時, virtual的基底只會生出一份.
e.g. B繼承A, C也繼承A, D同時多重繼承B和C, 若A非虛擬則會生出兩份A, 建構子被呼叫兩次, 若為虛擬則只會生出一份A, 建構子只被呼叫一次.

class A{
public:
int AA;
}

class B: public class A{
public:
int BB;
}

class C: public class A{
public:
int CC;
}

class D: public B, C {
public:
int DD;
}



A---->B---+
|--->D
A---->C---+

+->B---+
A--| |--->D
+->C---+


5. const
const變數繼承時只有一份, 不能更改值.
const函式只能acess const變數.

沒有留言:

張貼留言