передать и вернуть ссылки

0

Я определил нормальный класс T:

class T { 
  public:
    T() { cout << "default constructor " << this << "\n" }
    T(const & T a) { cout <<"constructor by copy " << this << "\n"}
    ~T() { cout << "destructor "<< this << "\n"}
    T & operator=(T & a) {
      cout << " assignemnt operator :" << this << " = " << &a << endl;}
};

И есть 4 функции, одна из которых неверна:

T f1(T a){ return a; }
T f2(T &a){ return a; }
T &f3(T a){ return a; } 
T &f4(T &a){ return a; }

Кто-нибудь знает, кто из них ошибается?

Теги:
reference

1 ответ

5
Лучший ответ

f3 неверно, потому что он возвращает ссылку на локальный объект.

Скопированы параметры, переданные по значению. Их копии локальны для функций, которым они передаются, - они выходят за рамки, как только функция возвращается.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню