1. private
用于限制类的成员的时候,这些成员(变量或函数)只能被该类的成员函数(私有或公有函数,不限制,这一点与protected相同)以及被标识为friend的函数或类函数访问。这个私有是严格私有(只能本类,任何形式的派生类成员都不能访问)。
而在派生类时使用privite 限制,是指将基类所有公有的成员(变量或函数)在派生类中变成privite (包括protected修饰的成员也变成了privite)(即一把就全变成了私有了,够狠的!)。
2. protected
用于限制类的成员的时候,作用同privite。
protected的作用体现在派生的时候,它既希望这些成员被派生类成员函数访问,不要像privite那样限制得太死,但又不希望外部(单独函数或其它类的函数)通过派生类的对象直接访问。
基类中用 protected修饰的成员,则分情况:如果派生类时使用protected修饰,则其属性不变,仍然是protected成员,如果子子孙孙都使用protected修饰,则它永远保持不变;如果派生时用privite修饰 ,则该字段在本类中变成私有了,不能再被继续派生的类访问;而public不影响原来的修饰,原来是啥还是啥,但不能把原来的privite和 protected修改为public。
3. public
public最简单,没有任何限制,原来是啥还是啥。
4. 易混淆点
最容易混淆的是派生类时分别加 privite,protected和 public 时容易搞不清,其实先丢开 public ,因为它什么也不影响,容易混淆的是 privite和 protected 。
我们可以认为,privite一把将所有基类成员改为privite(实际上改的是protected和public成员)。protected一把将所有基类成员改为protected(当然它不能将private也改了)。