Для этой программы
#include <iostream>
using std::cout;
struct C
{
C() { cout << "Default C called!\n"; }
C(const C &rhs) { cout << "CC called!\n"; }
};
const C f()
{
cout << "Entered f()!\n";
return C();
}
int main()
{
C a = f();
C b = a;
return 0;
}
вывод, который я получаю:
Entered f()!
Default C called!
CC called!
Так как f()
возвращается по значению, он должен возвращать временный. Поскольку T a = x;
- T a(x);
, не вызывал бы он конструктор копирования для построения a
, а временный переданный как его аргумент?