Я уже публиковал подобный вопрос до , почему мой локальный объект уничтожен дважды? , но я запутался в другом пункте.
вот программа:
class AT
{
public:
int a;
AT() { cout<<"construct"<<endl; }
AT(const AT& at) { cout<<"copy"<<endl; }
~AT() { cout<<"destroy"<<endl; }
};
AT func(AT at)
{
return at;
}
AT func2(AT at)
{
at.a = 5;
return at;
}
затем я вызываю:
AT at;
func2(func(at));
вывод:
construct
copy
copy
destroy
copy
destroy
destroy
Я полагаю, что будет 4 копии и 4 уничтожения в выводе, я ясно в func (at), аргументкопируется, и возвращаемое значение копируется, и оба уничтожаются позже.Но в func2 () кажется, что аргумент не копируется.Означает ли это: если передать возвращаемое значение аргументу, аргумент не будет скопирован?