- #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声明