C++ を学習していますが、この演習について質問があります。
#include<iostream>
using namespace std;
class B {
public:
int x;
B(int z=1): x(z) {}
};
class D: public B {
public:
int y;
D(int z=5): B(z-2), y(z) {}
};
void fun(B* a, int size) {
for(int i=0; i<size; ++i) cout << (*(a+i)).x << " ";
}
int main(){
fun(new D[4],4); cout << "**1\n";
B* b = new D[4]; fun(b,4); cout << "**2\n";
b[0] = D(6); b[1] = D(9); fun(b,4); cout << "**3\n";
b = new B[4]; b[0] = D(6); b[1] = D(9);
fun(b,4); cout << "**4\n";
}
それは印刷します:
3 5 3 5 **1
3 5 3 5 **2
4 7 3 5 **3
4 7 1 1 **4
**1 の前と **2 の前に、3 5 3 5 と出力されるのはなぜですか? 私は 3 3 3 3 と考えていました。**3 の前は 5 7 3 3 と考えていました。**4 の前は 4 7 3 3 と考えていました。
前もって感謝します!