Идея звонящего и вызываемого абонента выглядит неправильно для меня. Вы должны думать о scopes
здесь.
В тот момент, когда создается стек для функции там, где оживает объект P x
в foo
, объект будет «создан». Таким образом, объект будет удален, наконец, оставив область действия, в вашем случае - функцию.
Таким образом, нет теоретического различия, если иметь локальную область видимости внутри функции, которая вводит новые объекты, а затем оставить эту область видимости в той же функции.
Компилятор может «видеть», как ваш объект используется, особенно модифицируется, и может путем встраивания функции также пропустить создание «временного» объекта, пока код ведет себя «как будто» написано.