в конструкторе:
class A
{
public:
A() { std::memset(this, 0, sizeof(A)); }
private:
int a;
};
Авторы такого подхода часто признают его ограниченность, ведь с виртуальными функциями и наследованием он работает некорректно. Но более любопытен другой факт, на который часто не обращают внимания. При компиляции эта конструкция превращается в цикл со сравнениями и переходами, что существенно медленнее "тупой" инициализации присваиванием:
class A
{
public:
A() : a(0) {}
private:
int a;
};
Комментариев нет:
Отправить комментарий