當多态處理對象時,傳位址與傳值有明顯的不同。
結論:
第一,describe()接受的是一個Pet對象(而不是指針或引用),是以describe()中的任何調用都将引起一個與Pet大小相同的對象壓棧并在調用後清除。這意味着,如果一個有Pet派生來的類的對象被傳給describe(),則編譯器會接受它,但隻拷貝這個對象的對應于Pet的部分,切除這個對象的派生部分。
Dog對象d在切片過程中真的變成了一個Pet對象。
對象切片實際上是當它拷貝到一個新的對象時,去掉原來對象的一部分,而不是像使用指針或者引用那樣簡單地改變位址的内容。