mikejsavage.co.uk • About • Archive • RSS • Thanks for blocking ads! Blocking ads owns: AdGuard for Safari / uBlock Origin for everything else
This one is very simple and I'm surprised I've not written it down already.
Default initialisation is widely considered to be good, but if you're
being a performance nut you might want to opt-out. In D you can do int
x = void;
. Rust apparently has mem::uninitialized()
. You can do the
same thing in C++ thusly:
enum class NoInit { DONT };
#define NO_INIT NoInit::DONT // if you want
struct v3 {
float x, y, z;
v3() { x = y = z = 0; }
v3( NoInit ) { }
};
v3 a;
v3 b( NO_INIT );
// a = (0, 0, 0) b = (garbage)
On a similar note, in my code I prefer to design my structs so that all
zeroes is the default state, and then my memory managers all memset(
0 )
when you allocate something. I find it easier than getting proper
construction right, and I've heard that echoed by a few other people so
I guess it's not a totally bunk idea.