Почему возврат ссылки на автоматическую переменную работает?
Я сейчас читаю оC ++и я прочитал, что при использовании возврата по ссылке я должен убедиться, что я не возвращаю ссылку на переменную, которая выйдет из области видимости, когда функция вернется.
Так почему вAdd
функционировать объектcen
возвращается по ссылке и код работает правильно ?!
Вот код:
#include <iostream>
using namespace std;
class Cents
{
private:
int m_nCents;
public:
Cents(int nCents) { m_nCents = nCents; }
int GetCents() { return m_nCents; }
};
Cents& Add(Cents &c1, Cents &c2)
{
Cents cen(c1.GetCents() + c2.GetCents());
return cen;
}
int main()
{
Cents cCents1(3);
Cents cCents2(9);
cout << "I have " << Add(cCents1, cCents2).GetCents() << " cents." << std::endl;
return 0;
}
Я использую CodeBlocks IDE поверх Win7.