| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Обнуление всех переменных класса |
| Автор: andrew_121 21.8.2008, 18:45 | ||||||
| Всем привет. Допустим есть класс:
По стандартному их инициализировать можно так:
А возможно это сделать так?
Пробовал в Mingw и в gcc, работает. Интересны плюсы и минусы, и подводные камни. |
| Автор: Mayk 21.8.2008, 18:51 | ||
| такой способ затрёт vtable если она есть. соответственно вызов любой виртуальной ф-ции обрушит программу Добавлено @ 18:55
|
| Автор: andrew_121 21.8.2008, 19:06 |
| Mayk, Помоему...Вы меня не поняли... Если сделать так как Вы приводите - Естественно! Я же обнуляю переменные в конструкторе. |
| Автор: UnrealMan 21.8.2008, 19:14 |
Всё равно это незаконно. Если уж так хочется обнулять поля memset-ом, можешь поместить их во вспомогательный POD-класс, объект которого потом сделать членом. |
| Автор: Lazin 21.8.2008, 19:26 | ||
| это кривые костыли, лучше так не делать вообще есть такая вещь как наследование, о которой memset не знает, соответственно затретъ данные предка, которые к тому моменту уже проинициализированы. в общем это слишком чревато разными ошибками... например, если в классе есть члены-данные, которые имеют внутри себя указатели на данные и дефолтный конструктор...
|
| Автор: andrew_121 21.8.2008, 20:01 |
| Все, вопрос исчерпан. Всем спасибо. |
| Автор: NiJazz 25.8.2008, 14:57 |
| А если будут виртуальные функции? |
| Автор: Lazin 25.8.2008, 16:29 | ||
это вообще жопакеды |
| Автор: andrew_121 25.8.2008, 16:34 |
| NiJazz Lazin Парни. Ну вы что на самом деле думаете что я собрался таким образом обнулять классы с виртуальными функциями? Блин...это только для структур, ненаследуемых! Хорошь прикалыватся |