Создание объекта одного класса с таким же именем
У меня есть простая программа-прототип, написанная на скорую руку, которая создает массив объектов определенного класса House и затем выполняет с ним различные манипуляции. Я сделал цикл, в котором каждый раз создается объект h и затем заполняется(вызывается set() метод - set(),get() и show() - обязательное условие). После чего этот объект заносится в вектор и создается снова объект h. Что происходит в этот момент с прошлым объектом? Срабатывает деструктор и он удаляется, но остается храниться в массиве? Немного запутался просто. Сам код:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
class House {
private:
string city;
string street;
string building;
string house_type;
int floors;
int current_floor;
int rooms;
double area;
double living_area;
public:
void sethouse(string c, string s, string b, string t, int f, int cf, int r, double a, double la) {
city = c;
street = s;
building = b;
house_type = t;
floors = f;
current_floor = cf;
rooms = r;
area = a;
living_area = la;
}
string getCity() {
return city;
}
string getStreet() {
return street;
}
string getBuilding() {
return building;
}
string getHouseType() {
return house_type;
}
int getFloors() {
return floors;
}
int getCurrentFloor() {
return current_floor;
}
int getRooms() {
return rooms;
}
double getArea() {
return area;
}
double getLivingArea() {
return living_area;
}
void show() {
cout << "Address: " << city << ", " << street << ", " << building << endl;
cout << "House type: " << house_type << endl;
cout << "Floors: " << floors << endl;
cout << "Current floor: " << current_floor << endl;
cout << "Rooms: " << rooms << endl;
cout << "Total area: " << area << endl;
cout << "Living area: " << living_area << endl;
cout << "------------------------" << endl;
}
};
int main() {
vector<House> houses;
// Добавление квартир в массив
string c,s,b,ht; int f,cf,r; double a,la;
int n;
cout << "Enter count houses: ";cin >> n;
for (int i = 1; i<=n;i++){
House h;
cout << "Enter describe " << i << "house: ";
cout << "\n\nEnter city: "; cin >> c;
cout << "Enter street: "; cin >> s;
cout << "Enter building: "; cin >> b;
cout << "Enter house_type: "; cin >> ht;
cout << "Enter floors: "; cin >> f;
cout << "Enter current_floor: "; cin >> cf;
cout << "Enter rooms: "; cin >> r;
cout << "Enter area: "; cin >> a;
cout << "living_area: "; cin >> la;
h.sethouse(c,s,b,ht,f,cf,r,a,la);
houses.push_back(h);
}
...
Источник: Stack Overflow на русском