-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