如何将继承的类视为成员对象? C ++

时间:2016-04-30 11:03:13

标签: c++ inheritance

假设如下:

class A {
    public: 
        A();
    protected:
        int a;
};

class B : public A {
    public: 
        B();
};

我的问题:

  • 我是否可以(直接)访问A的受保护数据成员,并且可以在不使用公共成员函数的情况下修改它们?
  • 我可以将B内部视为“现有”对象,以便我可以通过引用返回A并能够修改其数据成员吗?

我是C ++的新手。我尝试了几件事来把“A”当作对象,但我不断收到错误消息。这是我尝试过的一件事:

A & B::getA() {
    return A; //error: "A does not refer to a value"
}

2 个答案:

答案 0 :(得分:1)

  

我可以(直接)访问A的受保护数据成员吗?   修改它们而不必使用公共成员函数?

受保护的成员变量或函数与私有成员非常相似,但它提供了一个额外的好处,可以在子类中访问它们,这些子类称为派生类。

  

我可以将B内部视为"现有"对象,以便我可以返回A.   通过引用并能够修改其数据成员?

在B中,您可以直接访问A(公共和受保护)方法和属性。

Read此处了解更多信息。

答案 1 :(得分:0)

要返回对基类的引用,可以编写

A & B::getA() {
    return *this;
}

访问A的受保护数据成员,您只需编写

即可
a = 5;