派生类对应的这个基类部分的那个成员变量i来进行赋值
那么我们来具体看看obj本身这个对象那么它占用了存储空间包含哪些呢,
它首先呢,就包含了这个派生类自身
定义的那个成员变量i,
同时呢,还有这个基类的成员变量i,
那么另外呢,还包含了基类的私有的成员变量j,
那么这个时候我们就会看到说基类那一部分 成员变量也被包含在派生类中间,
当然要注意了,一般来说我们是不推荐
基类还派生类具有相同的成员变量名的。
我们一般呢会希望它能区别开来。
当然有时候呢,基类和派生类呢是会具有同名的函数的。
那么我们来具体说一说访问范围说明符,
我们刚才看到,这个对于基类的private的成员j
那么它就不能够被派生类的这个函数
所访问,那么我们看因为基类的private的成员它只能是被基类自身的成员函数以及
基类的友员函数进行访问
那么对于基类public的成员呢,那么它可以被很多函数所访问到。
其中包含了基类的成员函数,基类的友员函数,
派生类的成员函数,派生类的友员函数 以及其他的函数。因为它是public,完全公开化的。
所以可以被一系列的函数所访问到。
那么第三种关键字是我们之前没有讲到的,被称为叫做protected,
那么我们在引入这个继承这样的一个关系之后呢,它也会被提到
因为基类的protected成员呢是可以被下列的函数所访问的,
除了像private一样是可以被基类的成员函数和基类的友员函数访问到,那么
protected成员呢稍微特殊一点,ii呢ii一点,
它可以被派生类的成员函数访问,
那么它可以访问谁呢? 可以访问当前对象的基类的
保护成员。啊,注意一定是当前对象 基类的保护成员。我们具体来看一下。
我们有一个基类,称为叫做class Father, 那么它分别有三种不同
访问范围说明符,对应下的这个成员,称之为叫做nPrivate,nPublic和
nProtected,那么 它有一个派生的类叫做class Son,对吧,
我们从爸爸那里派生出来了一个
儿子类,那么在son这个类里面呢,我们定义了一个函数,成员函数
称为叫做access Father,我们要看一看爸爸里面的这些成员哪一些是我们可以拿来用的,
我们发现说呢,nPublic呢是可以直接被赋值访问的,
赋值为1.那么nPrivate等于1这个语句呢就是错误的。
我们不可以访问老爸私有的东西。那么,还有一类叫做nProtected,
OK,这个呢是可以被访问到的,因为呢它是从基类继承来的,啊,protected,
那么是作为当前这个对象的这个
保护成员是可以被访问到的。
那么如果我们在这个son这个类里面
又重新定义了一个新的对象称为叫做f,那么如果我们去 调用
f.nProtected=1,那么这个语句呢就是错误的,
因为f.nProtected不是我们当前这个accessFather这个函数
所面对的那个对象,啊,
它是另外一个,所以呢,这个不是当前对象的protected成员呢,我们也一样是不能够访问的。
我们再来看,如果在其他的函数里头,不再是成员函数了,
在main函数里头,那么我们定义了
father的对象,新的一个对象的f和son的对象s,那么
他们相应的nPublic的对应的这个成员都是可以被访问到的,
那么,不管是nProtected还是nPrivate,
都是不可以被访问的,通通不可以访问。
所以我们要注意,protected成员只能是在这个 派生类当前的这个对象中间可以被访问到。