c++公有继承、保护继承和私有继承

https://blog.csdn.net/sinat_30071459/article/details/53748588

C++中的继承方式有:
public、private、protected三种(它们直接影响到派生类的成员、及其对象对基类成员访问的规则)。
(1)public(公有继承):继承时保持基类中各成员属性不变,并且基类中private成员被隐藏。派生类的成员只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象只能访问基类中的public成员。
(2)private(私有继承):继承时基类中各成员属性均变为private,并且基类中private成员被隐藏。派生类的成员也只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象不能访问基类中的任何的成员。
(3)protected(保护性继承):继承时基类中各成员属性均变为protected,并且基类中private成员被隐藏。派生类的成员只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象不能访问基类中的任何的成员。

如果缺省,默认为private继承。

派生类对象要访问基类成员,必须在成员函数名前加上范围(类名::),这也适用于基类的成员变量。——C++派生类中调用基类成员

代码示例:

#include <iostream>

using namespace std;


class A{
public:
     int i=5;
     virtual void fun(){
        cout<<"A:fun()"<<endl;
    }
};

class B :public A{
public:
    int i=6;
    void fun(){
        cout<<"B:fun()"<<endl;
    }
};


int main() {
    cout << "hello https://tool.lu/" << endl;
    
    A * pb = new B();
    pb->fun();
    cout<<pb->i<<endl;
    
    B * b = new B();
    cout<<b->A::i<<endl;
    cout<<b->i<<endl;
    b->A::fun();
    return 0;
}

结果:

hello https://tool.lu/
B:fun()
5
5
6
A:fun()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容