Создание объекта одного класса с таким же именем

Рейтинг: 0Ответов: 1Опубликовано: 21.05.2023

У меня есть простая программа-прототип, написанная на скорую руку, которая создает массив объектов определенного класса 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);
        
        
    }
...

Ответы

▲ 3Принят

Объект копируется в вектор, его оригинал уничтожается.

Добавьте копирующий конструктор и деструктор, выводящие соответствующие сообщения, и посмотрите, что они выводят...