【发布时间】:2013-04-24 10:41:05
【问题描述】:
虽然我们正在打印bval,但输出也显示了dval 的值。编译器使用什么实际逻辑?我的预期输出是00000 00000,但我得到的输出是00000 01010。
#include <iostream>
using namespace std;
class base {
public:
int bval;
base() { bval = 0; }
};
class deri : public base {
public:
int dval;
deri() { dval = 1; }
};
void SomeFunc(base *arr , int size) {
for(int i = 0; i < size; i++, arr++)
cout << arr-> bval;
cout<<endl;
}
int main() {
base BaseArr[5];
SomeFunc(BaseArr, 5);
deri DeriArr[5];
SomeFunc(DeriArr, 5);
return 0;
}
【问题讨论】:
-
未定义的行为。您不能多态地处理数组。正在搜索重复...
标签: c++ pointers inheritance