C++之共有继承、保护继承、私有继承

2021-06-28 20:05

阅读:620

标签:main   对象   vat   类对象   分享   protected   info   ted   prot   

1.封装,public,private作用就是这个目的。

  类外只能访问public成员而不能方位private成员;

  private成员只能被类成员和友元访问;

2.继承,protected的作用就是这个目的;

  protected成员可以被子类对象访问,但不能被类外的访问;

3.公有继承:class A : public B

技术分享图片

#include
#include
using namespace std;
 
class A{
public:
  int a;
  A(){
    a1 = 1;
    a2 = 2;
    a3 = 3;
    a = 4;
  }
  void fun(){
    cout //正确
    cout //正确
    cout //正确
    cout //正确
  }
public:
  int a1;
protected:
  int a2;
private:
  int a3;
};
class B : public A{
public:
  int a;
  B(int i){
    A();
    a = i;
  }
  void fun(){
    cout //正确,public成员
    cout //正确,基类的public成员,在派生类中仍是public成员。
    cout //正确,基类的protected成员,在派生类中仍是protected可以被派生类访问。
    cout //错误,基类的private成员不能被派生类访问。
  }
};
int main(){
  B b(10);
  cout  endl;   //正确
  cout //正确
  cout //错误,类外不能访问protected成员
  cout //错误,类外不能访问private成员
  system("pause");
  return 0;
}

 

4.保护继承

技术分享图片

#include
#include
using namespace std;
class A{
public:
  int a;
  A(){
    a1 = 1;
    a2 = 2;
    a3 = 3;
    a = 4;
  }
  void fun(){
    cout //正确
    cout //正确
    cout //正确
    cout //正确
  }
public:
  int a1;
protected:
  int a2;
private:
  int a3;
};
class B : protected A{
public:
  int a;
  B(int i){
    A();
    a = i;
  }
  void fun(){
    cout //正确,public成员。
    cout //正确,基类的public成员,在派生类中变成了protected,可以被派生类访问。
    cout //正确,基类的protected成员,在派生类中还是protected,可以被派生类访问。
    cout //错误,基类的private成员不能被派生类访问。
  }
};
int main(){
  B b(10);
  cout //正确。public成员
  cout //错误,protected成员不能在类外访问。
  cout //错误,protected成员不能在类外访问。
  cout //错误,private成员不能在类外访问。
  system("pause");
  return 0;
}

 

5.私有继承

技术分享图片

 

#include
#include
using namespace std;
class A{
public:
  int a;
  A(){
    a1 = 1;
    a2 = 2;
    a3 = 3;
    a = 4;
  }
  void fun(){
    cout //正确
    cout //正确
    cout //正确
    cout //正确
  }
public:
  int a1;
protected:
  int a2;
private:
  int a3;
};
class B : private A{
public:
  int a;
  B(int i)
{ A(); a
= i; } void fun(){ cout //正确,public成员。 cout //正确,基类public成员,在派生类中变成了private,可以被派生类访问。 cout //正确,基类的protected成员,在派生类中变成了private,可以被派生类访问。 cout //错误,基类的private成员不能被派生类访问。 } }; int main(){ B b(10); cout //正确。public成员 cout //错误,private成员不能在类外访问。 cout //错误, private成员不能在类外访问。 cout //错误,private成员不能在类外访问。 system("pause"); return 0; }

 

总结:

  protected,是指子类可以访问类成员,但是不能被外部访问;

 

C++之共有继承、保护继承、私有继承

标签:main   对象   vat   类对象   分享   protected   info   ted   prot   

原文地址:https://www.cnblogs.com/weiyouqing/p/9648563.html


评论


亲,登录后才可以留言!