美文网首页
c++公有继承、保护继承和私有继承

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

作者: 菜鸟瞎编 | 来源:发表于2019-06-15 17:19 被阅读0次

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()

相关文章

网友评论

      本文标题:c++公有继承、保护继承和私有继承

      本文链接:https://www.haomeiwen.com/subject/ihobfctx.html