memset is sometimes used to initialize data in a constructor like the example below. Does it work in general ? Is it a good idea in general?
class A {
public:
A();
private:
int a;
float f;
char str[35];
long *lp;
};
A::A()
{
memset(this, 0, sizeof(*this));
}
Don’t use
memset. It’s a holdover from C and won’t work on non-PODs. Specifically, using it on a derived class that contains any virtual functions — or any class containing a non-builtin — will result in disaster.C++ provides a specific syntax for initialization:
To be honest, I’m not sure, but
memsetmight also be a bad idea on floating-points since their format is unspecified.