因此,我正在用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;
}
答案 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.b
为10
。显然这是一个错误的期望。