dlaczego destruktorów jest wiecej niz konstruktorów

0

https://godbolt.org/z/orj7P4ToP

Coś mnie podkusiło aby dopisać do konstruktora i destruktora "std::cout << " !

Tak bez kompilatora to bym powiedział że będzie 3 konstruktory i trzy destruktory
A wychodzi trochę inaczej

Dlaczego destruktorów jest więcej niż konstruktorów ?

wyjście z aplikacji :

main BEGIN:
SeriesPlus CONSTRUKTOR
SeriesPlus CONSTRUKTOR
SeriesPlus DESTRUKTOR property=321
SeriesPlus CONSTRUKTOR
SeriesPlus DESTRUKTOR property=321
SeriesPlus DESTRUKTOR property=4321
Vector:
series.property=321
series.property=4321
series.property=5321
main END:
SeriesPlus DESTRUKTOR property=321
SeriesPlus DESTRUKTOR property=4321
SeriesPlus DESTRUKTOR property=5321

#include <cstdio>
#include <vector>
#include <iostream>
#include <vector>

class SeriesPlus
{
public:
    int property{0};
    SeriesPlus()
    {
        property = 123;   
         std::cout << "  SeriesPlus CONSTRUKTOR\n";
    }
    ~SeriesPlus()
    {

        std::cout << "  SeriesPlus DESTRUKTOR property="<<property<< "\n";
    }
};

int main()
{
    std::cout << "main BEGIN:\n";
    std::vector<SeriesPlus> series;

    // tak to chyba tylko GCC
    // SeriesPlus &s1 = series.emplace_back(); 
    // SeriesPlus &s2 = series.emplace_back(); 
    // SeriesPlus &s3 = series.emplace_back(); 

     series.emplace_back();
     series.back().property = 321;
     series.emplace_back();
     series.back().property = 4321;
     series.emplace_back();
     series.back().property = 5321;

    std::cout << "Vector:\n";
    for (auto &x: series)
        std::cout << "  series.property=" << x.property << "\n";
    std::cout << "main END:\n";
}
1

poczytaj jak działa std::vector i co się dzieje jak już nie ma w nim miejsca na nowe elementy

5

Dodaj:

SeriesPlus(const SeriesPlus &sp)
    {
        property = sp.property;
        std::cout << "  SeriesPlus COPY CONSTRUKTOR\n";
    }
0

Dziękuje bardzo!
Materiały dostarczone tłumacza wszystko.

1 użytkowników online, w tym zalogowanych: 0, gości: 1