определение объекта, используя ссылку C++

При чтении Лафоре "Объектно ориентированное программирование" увидел код:

#include <iostream>

using namespace std;

class Dist{
private:
    int feet;
    int inches;
public:
    void setDist(){
        cout << "дюймы";cin >> inches;
        cout << "футы";cin >> feet;
    }
    void getDist(){
        cout << feet << "-" << inches;
    }
};

int main(){
    Dist& dst = *(new Dist); // не понятно - зачем мы здесь ставим &
    dst.setDist();
    dst.getDist();
    return 0;
}

зачем в данном случае используется &, если код будет работать и без него


Ответы (1 шт):

Автор решения: HolyBlackCat

Правильнее всего было бы просто Dist dst;, от new здесь никакой пользы.

зачем в данном случае используется &, если код будет работать и без него

(1) Dist &dst = *(new Dist); и (2) Dist dst = *(new Dist); - это разные вещи. (1) - это просто бесполезное использование new. (2) тоже, но во втором случае вы еще и копируете получившийся объект, и теряете адрес оригинального объекта, поэтому не сможете позвать на нем delete и получаете гарантированную утечку памяти (а в первом случае можно сделать delete &dst;, чтобы освободить память).

→ Ссылка