class BST { ... }; class BalancedBST: public BST { ... }; 在一個(gè)真實(shí)的程序里,這樣的類應(yīng)該是模板類,但是在這個(gè)例子里并不重要,加上模板只會(huì)使得代碼更難閱讀。為了便于討論,我們假設(shè)BST和BalancedBST只包含int類型數(shù)據(jù)。
for (int i = 0; i < numElements; ) { s << array[i]; } 這里的array[I]只是一個(gè)指針?biāo)惴ǖ目s寫(xiě):它所代表的是*(array)。我們知道array是一個(gè)指向數(shù)組起始地址的指針,但是array中各元素內(nèi)存地址與數(shù)組的起始地址的間隔究竟有多大呢?它們的間隔是i*sizeof(一個(gè)在數(shù)組里的對(duì)象),因?yàn)樵赼rray數(shù)組[0]到[I]間有I個(gè)對(duì)象。編譯器為了建立正確遍歷數(shù)組的執(zhí)行代碼,它必須能夠確定數(shù)組中對(duì)象的大小,這對(duì)編譯器來(lái)說(shuō)是很輕易做到的。參數(shù)array被聲明為BST類型,所以array數(shù)組中每一個(gè)元素都是BST類型,因此每個(gè)元素與數(shù)組起始地址的間隔是be i*sizeof(BST)。