какие функции вызываются при передаче значения в функцию - PullRequest
0 голосов
/ 31 мая 2010

В C ++, если объект класса передается в качестве параметра в функцию, вызывается конструктор копирования класса.

Мне было интересно, если объект будет неклассного типа, какая функция будет вызываться?

Аналогично, в C, какая функция вызывается при передаче значений или адресов переменных в функцию?

Спасибо и всего наилучшего!

Ответы [ 4 ]

6 голосов
/ 31 мая 2010

Никакая функция не будет вызвана; байты, составляющие объект, будут просто скопированы в правильное место для вызываемого (будь то место в памяти или регистр).

3 голосов
/ 31 мая 2010

Конструктор копирования вызывается, только если объект передается по значению (и не является типом POD ). Это одна из причин, по которой принято передавать объекты по ссылке и по ссылке const, если вы не хотите, чтобы объект был изменен функцией.

2 голосов
/ 31 мая 2010

Функция не вызывается.

Поскольку необъектные типы не имеют методов, они просто копируются в стек для использования вашей функцией как есть.

1 голос
/ 31 мая 2010

Это зависит от реализации, но в некоторых случаях вы можете вызвать вызов функции, если передаете значение с плавающей запятой в функцию, ожидающую значение целого типа. (Это деталь реализации, а не часть языка, это правда, но из-за этого не стоит принимать во внимание. И такие преобразования часто медленны в любом случае, требуется вызов функции или нет.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...