第44课.继承中的访问级别

1.问题:子类能访问父类中的私有成员吗?

子类在父类的外界,所以子类不能直接访问父类的私有成员。但是子类的定义中说子类拥有父类的一切属性和行为,怎么使子类访问父类的私有成员呢?这里就涉及到protected的使用了。

2.继承中的访问级别

a.面向对象中的访问级别不只是public和private
b.可以定义protected访问级别
c.protected的意义:
 1).修饰的成员不能被外界直接访问(private)
 2).修饰的成员可以被子类直接访问(即只能在子类中访问)

eg:

#include <iostream>
#include <string>

using namespace std;

class Parent
{
protected:
    int mv;
public:
    Parent ()
    {
        mv = 100;
    }
    
    int value()
    {
        return mv;
    }
};

class Child : public Parent
{
public:
   int addvalue(int v)
   {
        mv = mv + v;        //protected 修饰的成员变量可以被子类调用
   }
};

int main()
{
    Parent p;
    
    cout << "p.mv = " << p.value() << endl;
    
    //p.mv = 1000;      外界不能调用protected修饰的变量
    
    Child c;
    
    cout << "c.mv = " << c.value() << endl;
    
    c.addvalue(50);
    
    cout << "c.mv = " << c.value() << endl;
    
    //c.mv = 1000;      不能在子类之外的地方调用protected函数
    return 0;
}
posted @ 2019-11-26 14:02  人民广场的二道贩子  阅读(117)  评论(0编辑  收藏  举报