从基类的继承

时间:2018-11-26 14:31:29

标签: c++

我在这里学习c ++。

我正在学习有关继承和类的更多信息,但遇到以下问题:

class A
{
public:
   std::vector<int> vect1;
};

class B : A
{
public:
   int x, y;
};

class C : B
{
   c()
   {
      x=10;
      y=30;
      vect1.pushback(44);
   }
};

为什么我不能从C类访问vect1?我该如何实现?

我也尝试过:

class C : B, A {...}

但随后它说vect1是模糊的(或类似的东西)。我正在使用视觉工作室。

谢谢。

2 个答案:

答案 0 :(得分:5)

  

为什么我不能从C类访问vect1?

因为vect1具有私有访问权限。子类无法访问基类的私有成员。他们只能访问受保护的成员或公共成员。

此外,AB的私有基础,因此B的子类无法访问它。大孩子只能进​​入受保护的基地或公共基地。

class关键字定义的类的默认访问说明符是私有的(对于用关键字struct定义的类的默认访问说明符是公共的)。要用另一个访问说明符声明一个库,可以将访问说明符关键字放在声明中每个库的前面:

class B : protected A
{
    // ...
};

要使用其他访问说明符声明成员:

class A
{
protected:
   std::vector<int> vect1;
};

答案 1 :(得分:3)

要获取从派生类到基类的访问权限,您应该同时进行以下操作:

  • 公共继承
  • 受保护的声明

类似于以下内容:

#include <vector>

class A
{
protected:
   std::vector<int> vect1;
};

class B : public A
{
protected:
   int x, y;
};

class C : public B
{
public:
    C(){
       x=10;
       y=30;
       vect1.push_back(44);
    }
};