- #include <iostream>
- using namespace std;
- class Base
- {
- public:
- Base() { }
- ~Base() { }
- public:
- void FuncA() { cout << "FunA" << endl; }
- protected:
- void FuncB() { cout << "FuncB" << endl; }
- private:
- void FuncC() { cout << "FuncC" << endl; }
- };
- class CA : public Base
- {
- public:
- CA()
- {
- FuncA();
- FuncB();
- //FuncC(); // Error
- }
- ~CA() { }
- };
- class CB : protected Base
- {
- public:
- CB()
- {
- FuncA();
- FuncB();
- // FuncC(); // Error
- }
- ~CB()
- {}
- };
- class CC : private Base
- {
- public:
- CC()
- {
- FuncA();
- FuncB();
- //FuncC(); // Error
- }
- ~CC()
- {
- }
- };
- int main( int argc, char *argv[] )
- {
- CA a;
- CB b;
- CC c;
- a.FuncA();
- //a.FuncB(); // Error
- //b.FuncA(); // Error
- //b.FuncB(); // Error
- //c.FuncA(); // Error
- //c.FuncB(); // Error
- return 0;
- }
關於public,protected,private
對於類執行個體(對象)的可見度:public可見,其他不可見
對於派生子類的可見度:public,protected可見,private不可見
用作派生方式時,如
public派生方式:
基類的public作為子類的public聲明,基類的protected作為子類的protected聲明,private當然還是private
protected派生方式:
基類的public和protected都作為子類的protected聲明,private還是private
private派生方式
基類的聲明都作為自己的private聲明