【发布时间】:2014-09-26 03:26:54
【问题描述】:
#include <iostream>
using namespace std;
class base {
public:
int b;
base() { b = 0; }
void func1() {}
};
class derived : public base {
public:
int d;
derived() { d = 9; }
};
void func(base* bobj) {
for (int i = 0; i < 5; i++, bobj++)
cout << bobj->b;
cout << endl;
}
int main() {
base bobj[5];
func(bobj);
derived dobj[5];
func(dobj);
return 0;
}
输出:
00000
09090
在这里,当我将派生对象传递给期望基指针的 func() 时,我得到的输出为 09090,但我不明白为什么.. 有人可以解释第二个输出为什么打印 09090..??
【问题讨论】:
标签: c++ object inheritance constructor argument-passing