代码:
class B {
public:
B () : b(++bCounter) {}
int b;
static int bCounter;
};
int B::bCounter = 0;
class D : public B {
public:
D () : d(0) {}
int d;
};
const int N = 10;
B arrB[N];
D arrD[N];
int sum1 (B* arr) {
int s = 0;
for (int i=0; i<N; i++)
{
s+=arr[i].b;
}
return s;
}
int sum2 (D* arr) {
int s = 0;
for (int i=0; i<N; i++)
{
s+=arr[i].b+arr[i].d;
}
return s;
}
问题:
这些返回什么:
1)sum1(arrB)
=?
2)sum1(arrD)
=?
3)sum2(arrD)
=?
当我编译并运行这些时,我得到 55、65 和 155,但不知道为什么。我收集到在 arrB 中的变量是 b=1,2,3,...,10,而在 arrD b=11,12,...,20 中,我会回答 sum1(arrB)=55 和sum1(arrD)=155 等于 11+12+..+20 的和,而 sum2(arrD)=155,因为处处 d=0。
我究竟做错了什么?