-2
请运行该代码,并解释我为什么输出是这样的:错误输出
table[0]=3
table[1]=-858993567
table[2]=4
#include "stdafx.h"
struct First
{
long data;
};
struct Second : public First
{
char marker;
};
void printTable(First *table, int length)
{
for (int i=0; i < length; ++i)
{
printf("table[%d]=%ld\n", i, table[i].data);
}
};
int _tmain(int argc, _TCHAR* argv[])
{
Second myTable[3];
myTable[0].marker='a';
myTable[1].marker='b';
myTable[2].marker='c';
myTable[0].data=3;
myTable[1].data=4;
myTable[2].data=5;
printTable(myTable, 3);
return 0;
}
任何人都可以帮我吗?
因此,对于类数组,我无法将其转换为基类?
因为当我传递Second秒的单个对象时;
像printTable(&s, 1);
则一切正常;
– Likon 2012-02-19 11:57:02
的权利,你实际上是传递一个指向数组的第一个对象要找到下一个对象,函数需要知道确切类型(从而大小),否则找不到数组的第二个和第三个对象 – 2012-02-19 12:01:13
谢谢,它可以帮助我。 – Likon 2012-02-19 12:07:44