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變數.