如何使派生类对象访问基类的值?

时间:2019-04-29 21:13:15

标签: c++

因此,我正在用C ++制作这个愚蠢的项目,每当我从派生类中调用基类的数据成员时,就会得到“不必要的”值。很抱歉张贴几乎所有代码,因为我不确定要避免的部分:(


#include <iostream>

using namespace std;
class A
{
   public:
    string a[10];
    int b[10];
    void setup()
    {
        a[1]="Hello world";
        b[1]=10;

    }

};
class B:public A
{
    public:
    void test()
    {
        cout<<A::a[1];
        cout<<A::b[1];
    }
};
int main()
{
    A obj;
    B obj2;
    obj.setup();
    obj2.test();
    return 0;
}


1 个答案:

答案 0 :(得分:0)

obj.setup();

设置obj的成员的值。这与obj2的成员无关。 obj2.a的成员仍默认初始化,而obj2.b的成员仍未初始化。

改为使用以下内容:

B obj;
obj.setup();
obj.test();

一个简单的struct的类似问题。

struct Foo
{
   string a;
   int b;
};

Foo f1 = {"String 1", 10};
Foo f2;

鉴于上述情况,您希望f2.a"String 1",而f2.b10。显然这是一个错误的期望。