C++ 继承

来源:互联网 发布:chromium浏览器 linux 编辑:程序博客网 时间:2024/05/17 01:11

如果没有继承,类只有两种用户:类本身的成员和该类的用户。用户只能访问public接口,类成员和友元既可以访问public成员也可以访问private成员。
有了继承,就有了类的第三种用户:从类派生新类的程序员。类的protected部分即为派生类准备的。总的来说,提供给派生类的接口是protected成员和public成员的组合

class B{public:    int a,b;public:    B();protected:    int sum(){return a+b;}};class A:public B{    float c,d;public:    int s();};int A::s(){    return sum();}int main(){    A* derived = new A;    B base;    cout<<derived->sum()<<endl;//error    derived->a = base.sum();//error    cout<<derived->s()<<endl;    return 0;}

这里写图片描述

可以看到,派生类对象是不可访问基类的protected成员函数的。只能用派生类成员函数访问基类protected成员,然后派生类对象能够间接访问基类protected成员,

所以,要正确理解《C++Primer(第四版)》475页中的这句话,“派生类只能通过派生类对象访问其基类的protected成员,派生类对其基类类型对象的protected成员没有特殊访问权限。”

0 0
原创粉丝点击