Ich wollte nur hier den Unterschied bestätigen, nehmen dies als Beispiel:Constructor gegen neue
class Gate
{
public:
Gate(); //Constructor
void some_fun();
private:
int one, two;
ptr p1;
Gate* next;
};
typedef Gate* ptr;
Gate::Gate()
{
one = 0;
two = 0;
}
void Gate::some_fun()
{
p1 = new Gate;
p1 = p1->next;
p1 = new Gate();
}
In meinem Beispiel habe ich zwei neue Knoten von „Gate“ erstellt haben, und der einzige Unterschied zwischen ihnen ist, dass der erste Knoten nicht die Variablen "eins und zwei" initialisiert hat, während der zweite Knoten dies tut.
Es gibt keinen Unterschied zwischen 'new T' und' new T() 'für eine Klasse, bei der der Standardkonstruktor explizit wie deins definiert ist. Dieser Konstruktor wird in jedem Fall ausgeführt. –
@Josh, Hast du diesen Code tatsächlich ausgeführt und die Ergebnisse überprüft? – crashmstr
Ihr 'some_func()' leckt ein 'Gate' Objekt. – jrok