Ich habe diesen Code.Die Ausgabe ist: ~ A ~ A ~ AprintA ~ AprintA ~ AprintA ~ A. Ich verstehe, warum es printA ~ AprintA ~ AprintA ~ A druckt (weil ich 3 push_back habe), aber ich verstehe nicht, warum "~ A" 3 mal am Anfang des Satzes erscheint.Wenn ich nur v.push_back(a);
habe (nur das, ohne die anderen 2 Pushbacks, "~ A", wird nicht erscheinen, warum?Print Destructor in C++
#include<vector>
#include<iostream>
class A {
public:
virtual void print() {
std::cout << "printA";
}
virtual ~A() {
std::cout << "~A";
}
};
int main() {
std::vector<A> v;
A a;
A b;
A c;
v.push_back(a);
v.push_back(b);
v.push_back(c);
for (auto e : v)
e.print();
}
Reallokation; eine Kopie in der Schleife machen. – LogicStuff
Ihre Frage ist falsch formatiert. Nimm dir einen Moment Zeit, um das zu beheben. – StoryTeller
... auch Ihre Ausgabe Formatierung ist nicht die beste. Wenn Sie ein '" \ n "' nach jedem Cout setzen, wäre es viel einfacher zu lesen – user463035818