Когда вы передаете объект son
в функцию тестирования по значению, он будет преобразован в объект father
, поскольку test
принимает father
, а не son
.Если вы хотите принимать экземпляры подкласса без преобразования, вам необходимо принять аргумент по ссылке или по указателю.
Поэтому, если вы измените подпись test
на void test (father& x)
, она будет работать так, как вы хотите.