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