Пожалуйста, не пинайте :( не понимаю вот чего :
#include <iostream>
using namespace std;
class A
{
public:
A(){i = 0; cerr << " A(0) ";}
A(int b){i = b;cerr << " A(" << i << ") ";}
~A(){cerr << " ~A(" << i << ")\n";}
A (const A& b) {i = b.i;cerr << "copy(" << i << ") ";}
bool operator==(const A& a){return i == a.i;}
const A &operator=( const A &r )
{
if( *this == r )
{
cerr << " ravni ";
}
else
{
i = r.i;
cerr << " =(" << i << ") ";
}
return *this;
}
void f(){cerr << " f(" << i << ") ";}
void set(const int &b){i = b; cerr << " set(" << i << ") ";}
private:
int i;
};
A func()
{
A oder(6);
return oder;
}
int main()
{
A b = func();
b.f();
return 0;
}
rezalt :
A(6) f(6) ~A(6)
А я думал что при return'е в func oder копируется
с помощью копирования(выведется copy(6) ) и уничтожится как
переменная у которой закончилось время жизни ...
А тут получается что oder и b это один и тот же объект?
Объясните пожалуйста.