Ну логично -- если попробовать передать по значению вместо объекта базового типа объект производного типа, то произойдёт обрезка объекта, и мало ли какие баги в результате произойдут. Только по ссылке/указателю передавать...