Dies ist ein Code, den ich versucht habe zu verstehen, wie es funktioniert.Warum wird Destructor aufgerufen
#include <iostream>
using namespace std;
class A
{
public:
int variable;
A()
{
cout << "Default Constructor\n";
}
A(int variable_)
{
cout << "Overloaded Constructor\n";
variable = variable_;
}
A(A& Object)
{
cout << "Copy Constructor\n";
variable = Object.variable;
}
~A()
{
cout << "Destructor\n";
}
};
void main()
{
{
A* PA1 = new A(1);
cout << "\n";
A* PA2 = &(A(*(PA1)));
cout << "Second\n\n";
A* PA3 = &(A(1));
cout << "\n";
A* PA4 = new A(*(PA3));
}
cout << "\n";
system("pause");
}
Warum destructor nach der Initialisierung von PA2
genannt wird? Was bedeutet das - &(A(*(PA1))) and &(A(1))
?
Dies ist Ausgabe dieses Codes:
Und Sie haben keine Warnung wie "Adresse von tempororary" erhalten? –
* Warum wird Destruktor aufgerufen * - Ihre Ausgabe fehlt. Sie sollten den Wert von "this" ausgeben, um zu verstehen oder eine Idee zu bekommen **, welcher ** Destruktor oder Konstruktor aufgerufen wird. – PaulMcKenzie
PaulMcKenzie ich tat es aber A * PA2 = & (A (* (PA1))); indem PA2 so deklariert wird, wird Destruktor für dieselbe Adresse wie die von PA2 aufgerufen! Ich weiß nicht, was hier wirklich vor sich geht! –