To be honest, I suspected something like that (but how else to present this to a rookie). I'm curious about the realization, because, unlike C++, here the instances are purely dynamic and must be created explicitly. From what you say, I conclude that "magic" is the allocation on the heap and it only happens if it is called through the class. Otherwise, the constructor is called with an invalid Self as a regular method, is that correct? Isn't it forbidden from the compiler? I have never tried it...