Ich bin ein wenig verwirrt über Operator neu zu laden und zu löschen. schrieb ich einige Test:C++ - Überladung Operator neu
#include <iostream>
using namespace std;
class Test
{
public :
Test()
{
cout << "Test - ctor" <<endl;
}
~Test()
{
cout << "Test - dtor" <<endl;
}
Test(const Test& t)
{
cout << "Test - copy ctor" <<endl;
}
Test& operator = (const Test& t)
{
cout << "Test - assiment operator" <<endl;
}
void* operator new(size_t size)
{
cout << "Test - operator new" <<endl;
return NULL;
}
void print()
{
cout << "print" << endl;
}
};
int main()
{
Test* t = new Test();
t->print();
return 0;
}
Und der Ausgang ist:
Test - operator new
Test - ctor
print
Nun, wenn ich „NULL“ aus den „neuen“ zurückzukehren, warum mein Programm nicht abstürzen, wenn ich Druck nennen Funktion? danke.
die nichts mit der Überlastung zu tun hat, ist es regelmäßig nicht definiertes Verhalten ist. Versuchen Sie 'Test * t = nullptr; t-> print(); 'und sehen, was passiert (oder nicht). – molbdnilo
UB ist wie UB tut. – George