【发布时间】:2013-01-25 17:48:33
【问题描述】:
可能重复:
Can a pointer to base point to an array of derived objects?
我正在练习所学并尝试了以下方法:
#include <iostream>
struct S {
S() : val(0) {}
int val;
};
struct D : S {
D() : val(1) {}
int val;
};
void f(S *s) {
for (int i = 0; i < 5; i++, s++)
std::cout << s->val;
}
int main() {
D d[5];
f(d);
}
我觉得奇怪的是输出是01010,而不是我预期的11111。所以它似乎是从S 类中获取val 成员,而不是在每个其他循环上的D 类。但为什么呢?
【问题讨论】:
-
顺便说一句,
f(s);应该是f(d);,对吧?