情形:有基类,有派生类,有私有数据,有公有数据
1,私有数据成员只能被同一类的成员函数访问,公有数据成员可以被外界访问。
2,派生类的成员函数访问基类的成员、在派生类外访问基类的成员
(1)公有继承:基类的私有成员在派生类中并没有成为派生类的私有成员,它仍然是基类的私有成员,只有基类的成员函数可以访问它,不能被派生类的成员函数引用,即私有成员在派生类中是不可访问的。
既然是公有继承,为什么不让访问基类的私有成员?因此私有成员体现了数据的封装性,隐藏私有成员有利于测试、调试和修改系统。如果派生类可以访问基类私有成员,那么基类和派生类没有界限了。这就破坏了基类的封装性。保护私有成员是一条重要的法则。
(2)私有继承:在派生类中,基类的私有成员仍然不能访问,基类的公有成员和保护成员则在派生类中成为私有的。只能被派生类的成员函数访问,不能在派生类外直接被访问。