基類和派生類有同名成員的情況
//base
class base{
int j;
public:
int i;
void func();
};
//派生類
class derived:public base{
public:
int i;
void access();
void func();
};
void derived::access(){
j = 5;//error
i = 5;//引用的是派生類的 i
base::i = 5;//引用的是基類的 i
func();//派生類的
base::func();//基類的
}
derived obj;
obj.i = 1;
obj.base::i = 1;
對象占用的存儲空間.png
Note:一般來說住拭,基類和派生類不定義同名成員變量。
訪問范圍說明符
- 基類的 private 成員:
- 基類的成員函數(shù)
- 基類的友員函數(shù)
- 基類的 public 成員:
- 基類的成員函數(shù)
- 基類的友員函數(shù)
- 派生類的成員函數(shù)
- 派生類的友員函數(shù)
- 其他的函數(shù)
- 基類的 protected 成員:
- 基類的成員函數(shù)
- 基類的友員函數(shù)
- 派生類的成員或者友元只能通過派生類的對象來訪問基類的 protected 成員,而不能通過基類直接訪問。